2017-08-02 7 views
0

店舗価格のデータベースでは、浮動小数点型(10進数である必要があります)を使用しないでください。 JavaScriptには価格が安いのでparseFloat()JavaScriptでparseFloatは安全ですか?

例えば、私は1000000の数値を持つ配列を持っており、すべてを浮動小数点に解析し、セット全体およびさまざまな操作を行いたいと思います。

+3

浮動小数点数は浮動小数点数なので、同じ警告が適用されます。JavaScriptでは0.1 + 0.2は0.3ではありません。 10 + 20は30であるため、分数通貨を扱うことは一切なく、整数の小さな通貨単位を使います。 –

答えて

0

"安全"とは何を意味しているのかによって異なりますが、一般的には浮動小数点演算を使用しないでください。 parseFloatは、結果の浮動小数点数が最も近い丸め、均等に丸められる丸めモードに従って最も近いIEEEの倍数であることを保証します。ほとんどの場合、これは小さな丸めエラーになります:

> parseFloat("0.11").toFixed(40) 
< "0.1100000000000000005551115123125782702118" 

さらに数学的な操作は、丸め誤差が増加します。 toFixed(2)で最終結果を小数点以下2桁に丸めた場合、ほとんどの場合、期待される結果が得られるはずです。しかし、これは保証されません:あなたは本当に何をやっている知っている限り、安全のために最小通貨単位の整数値で動作

> parseFloat("1.37") * 90 * 90 * 90 * 90 * 90 * 90 * 90 * 90 
< 5897400777000001 

。 JavaScriptの数値型は、up to 253-1 exactlyの整数しか格納できないことに注意してください。

関連する問題