[前][次][番号順一覧][スレッド一覧]

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_]