ホームページ  >  記事  >  バックエンド開発  >  Mysqlで計算した値と電卓で計算した値が異なる問題の解決方法!

Mysqlで計算した値と電卓で計算した値が異なる問題の解決方法!

WBOY
WBOYオリジナル
2016-06-20 12:54:221003ブラウズ


上の SQL の図に示すように。 cjPrice は 600、cjNum は 5.97 この場合、

上記の SQL は 3581.9998741149902 を計算し、電卓は 3582 を計算します

そして、phpmyadmin を使用して次の SQL を実行すると、3582 が得られます。何が問題ですか?ああ

select sum(600*5.97) これも 3582


解き方を教えてください~~~


返信ディスカッション (解決策)

cjNum が DECIMAL 型でない場合は、round を使用して結果を取得します

フィールド型には float を使用します
単精度は正確ではありません
精度 要件が高い場合は、double、10 進数、数値に変更することをお勧めします
double、効率はわずかに劣りますが、精度は高くなります
10 進数と数値はほぼ同等であり、特定の精度を指定する必要があります

クエリの結果は、乗算している 2 つのフィールドの型に関連しています

cjPrice 整数型 cjNum Float 型
phpmysql で実行すると、mysql の計算と同じになります。小数点以下の桁付き。

おそらくバージョンに関係があると思われます。
selectround(SUM(cjPrice*cjNum), 2) from ..
小数点以下 2 桁を保持してください

確かに、cjPrice は 10 進数で、cjNum は 10 進数に変更するだけです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。