私は、次の文2進数を追加すると、アクションスクリプトで間違った結果を与える
トレース(+ 13.75 10.12) //出力23.869999999999997
に問題があり、これがそうであるとどのように、なぜ誰も私を説明できますこのうち正確な23.87を得るには?
ありがとうございました
私は、次の文2進数を追加すると、アクションスクリプトで間違った結果を与える
トレース(+ 13.75 10.12) //出力23.869999999999997
に問題があり、これがそうであるとどのように、なぜ誰も私を説明できますこのうち正確な23.87を得るには?
ありがとうございました
IEEE形式の精度のために起こります。
最も簡単なのはtoFixedです。
var num:Number = 10.12+13.75;
var numStr:String = num.toFixed(2);
var num2:Number = new Number(numStr);
Pranav、num2はNumber型でなければなりません。 – AsTheWormTurns
num = Math.round(num * 100)/ 100;これはOKでしょうか? –
@AsTheWormTurns doh! –
コンピュータ浮動小数点数は完全に正確ではありません。 JavaScript(そして、私はActionScriptであると仮定しています)は、64-bit IEEE 754 values(ECMAScript spec ref)を使用しています。この不正確さの最も良い例はおそらく0.1 + 0.2
であり、これは0.30000000000000004
になります。 23.87
を取得するには、丸めなければなりません。
BigDecimal
クラスまたはC#の
decimal
タイプに似て何かを)し、ライブラリを使用したほうが良いかもしれません。ただし、十進数型には、
1/3
を正確に表すことができないなど、独自の制限があります。
チェックこのアウト http://stackoverflow.com/questions/2214003/is-there-a-fixed-point-library-for-actionscript-3 –
ありがとうございました!私はから似たものをやっていましたAllan –