6

次のように、やや小さい傾向がある float 値の DB テーブルを調べる PHP スクリプトを作成しています。

0.00052
0.00134
0.00103
0.00149
0.00085
0.00068
0.00077
0.00088
0.00169
0.00063

私にはわからない理由で、次のようないくつかの値が科学表記法で DB に表示されます。

1.12305e-06

テーブルはフロートに設定されており、PHP であらゆる種類の関数を試して、数値を強制的に 10 進数として表示しましたが、役に立ちませんでした。私ができる限り試してみてください。すべての場合において、この数値表を一貫して 10 進数にすることはできません。

これを解決する方法について何か提案はありますか? typcasting と他のいくつかのオプション(float)を使用してみましたnumber_format()が、毎回変更はありません。

4

2 に答える 2

2

CLI(およびおそらく他の場所)から表示されるものには6桁の制限があるようです。例は1.12305e-06で、これは0.00000112305であり、0.00000と表示されますが、明らかにゼロではありません。

floatまたはdoubleの使用を主張している場合round(columnName,5)は、10進値での表示を強制するなどの方法を使用してそれらを強制的に除外する必要があります。それ以外の場合は、10進データ型に切り替えてください。

http://dev.mysql.com/doc/refman/5.0/en/floating-point-types.htmlから

浮動小数点値は概算値であり、正確な値として格納されていないため、比較で正確な値として処理しようとすると、問題が発生する可能性があります。また、プラットフォームまたは実装の依存関係の影響を受けます。詳細については、セクションC.5.5.8「<ahref = "http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html" rel ="nofollow">」を参照してください。浮動小数点値の問題」</p>

この正確な問題については、mysqlフォーラムのこのスレッドも参照してください。

于 2012-07-24T09:04:41.190 に答える
0

私の場合の解決策は、データベースで浮動小数点型から 10 進数型に変更することであることが判明したため、その解決策を検討するきっかけとなったコメントをくれた Romain に感謝します。

于 2012-07-25T05:24:01.903 に答える