PHPの少数誤差問題 SQLServer , MySQL

SQLserverのfloat型の値をCakePHPで取得したらなんか誤差が発生した。

データベースの値 82.88
取得できた値 82.879999999999995

割とよくある話かもしれないですが、請求関連のシステムや、統計したりするようなシステムでは
数字合わなくなったりするし、特に困りますよね。

で、いろいろ試した結果、SQL上で文字列に変換してから取得するのが楽ってことに気付いた。

◆修正前のSQL

SELECT NUMBER_COL FROM TEST

◆修正後のSQL

SELECT CONVERT(VARCHAR,NUMBER_COL) AS AAA FROM TEST

結果はこんな感じ。というかそのまま。

データベースの値 82.88
取得できた値 82.88

なんか無理やり感ありますが、半年ぐらい無事動いてます。
どの言語も少数の取扱いは何かしらの問題が発生するよね

シェアする

  • このエントリーをはてなブックマークに追加

フォローする