2016-04-20 3 views
-1

TypeScriptに問題があります。私が加えた2つの数字(15.995.00) は、20.9900000000002という結果になります。ここでTypeScriptの追加番号が高い浮動小数点を返す

私の宣言:

private difference: number; 
private prixReference : number; 
private max: number; 
[...] 
this.prixReference = 15.99; 
this.difference = 5.00; 
this.max = this.prixReference + this.difference; 

デバッガ

debugger values

任意のアイデア?

+2

[お楽しみください](https://en.wikipedia.org/wiki/IEEE_floating_point)。 – Marty

答えて

2

一般に、CPUの浮動小数点数は、CPU表現がバイナリ形式に基づいているため、小数部を正確に表すことができません。それは1/2又は2^-10.25も同様2^-2等しかし2の(負の)電源として表現することは不可能である1/100.1結果に結果に結果として

そこで、基本的に0.5は正常です。

結果として、2の累乗でないか、またはそれらの加算がないと、浮動小数点仮数の最後の桁に何らかの丸めが発生します。 Javascriptは、通常double型を使用し、53ビット(約16桁の数字)の精度を持ちます。double formatを参照してください。

関連する問題