mysql:13917
From: 忠犬 KEN公 <忠犬 KEN公 <ken_ken_1962@xxxxxxxxxx>>
Date: Wed, 25 Apr 2007 22:09:26 +0900
Subject: [mysql 13917] Re: TRUNCATEで掛け算
TRUNCATEは、小数点以下の指定桁数での切り捨てですから、 TRUNCATE(X,3)とすれば、123.4560でも123.4569でも、結果は 123.456になります。 ところで、tdiscountのデータ型は、float等にしていませんか? もしそうなら、小数点以下の何桁目かで切り捨てれば、誤差が 生じます。 MySQL 5.0で、proceをint、tdiscountをdec(3,2)でやって みたところ、誤差は生じませんでした。 tdiscountをfloatにした場合は、4160.999となりました。 >鈴木健です。 >MySQLで在庫管理をしていますが、TRUNCATEを使うと掛け算が正しくなりません。 >どうしてでしょうか? > >たとえば、priceが4380、tdiscountが0.95であるとして、 >SELECT (price * tdiscount) >とすると、値は4161と正しいのですが、 > >SELECT TRUNCATE((price * tdiscount),3) >とすると、4160.999となります。 > >priceフィールドのデータ型はDecimalとIntで試しましたが結果は同じでした。 >TRUNCATEを入れた目的は、小数点以下の数字を切るためです。 >(price * tdiscount)で4161.000になった値の小数点以下を切るのがTRUNCATEだ >と思うのですが、間違っているでしょうか? > > _________________________________________________________________ 懐かしの刑事ドラマや青春ドラマを大特集『西武警察』『スクールウォーズ』他 http://livesushi.jp/
13915 2007-04-25 21:32 [mailist <mailist@xxx] TRUNCATEで掛け算 13916 2007-04-25 21:59 ┣[Tatematsu <tatemax@x] -> 13917 2007-04-25 22:09 ┗[忠犬 KEN公 <ken_ken_]