2017-11-21 2 views
0

は、私は、データベースに大きなフロートを持っている:20202166.16PHPがオートラウンドの大きなフロートをするのを防ぐには?

私はPHPを呼び出す:

$num = odbc_result($sqlQuery,0); 
$number = number_format($num,2,',','.'); 

は私が 20.202.170,00得るが、私は 20.202.166,16

任意のアイデアはどのように自動丸めないようにしたいですか?

+3

'$ num'の値は何ですか? https://3v4l.org/EPBKvは丸めを表示していません。 –

+0

PHPで直接書くと結果は正しいですが、データベースから取り出すと結果は正しくありません –

+0

'var_dump($ num) ; 'は依然として間違った番号を表示し、問題はデータベースやODBCドライバです。 – Sammitch

答えて

1

コメントの回答に基づいたPHPのようではありません。どのデータベースを使用しているのかはわかりませんが、それはMySQLかもしれないと思いますか?浮動小数点と

の問題は、彼らは概算と正確な値として格納されていない あるので、時々混乱を引き起こす

浮動小数点数を値。 SQLステートメントに書かれた のような浮動小数点値は、内部で表現された値 と同じでない場合があります。浮動小数点値を比較で正確に と扱うと、問題が発生する可能性があります。これらはまた、 プラットフォーム依存または実装依存の影響を受けます。 FLOATとDOUBLEデータの データ型は、これらの問題の影響を受けます。 DECIMALカラムの場合、MySQLは の演算を65桁の小数点以下桁で実行します。これは最も一般的な不正確な問題 を解決するはずです。

出典:https://dev.mysql.com/doc/refman/5.7/en/problems-with-float.html

decimalとて、問題が解決するかどうかを確認するために列タイプを変更してみてください。

+0

実際に私はMysqlを使用していません、古いデータベースをsqlbaseという名前で使用しています。非常に役に立ちます –

+0

嬉しいことです!同じ問題を持つ将来の読者を助けるために、答えを受け入れたものとしてマークしてください。 – neuromatter

関連する問題