我是TypeScript的一个问题。当我添加两个数字( 15.99 和 5.00 ) 我在结果中得到 20.9900000000002 。
这是我的声明:
private difference: number;
private prixReference : number;
private max: number;
[...]
this.prixReference = 15.99;
this.difference = 5.00;
this.max = this.prixReference + this.difference;
调试器:
有什么想法吗?
答案 0 :(得分:2)
通常CPU中的浮点数不能精确地表示小数部分,因为CPU表示基于二进制格式。
所以基本上0.5
很好,因为它导致1/2
或2^-1
,0.25
同样导致2^-2
等。但0.1
结果进入1/10
,这不可能代表2
的(负)力量。
结果,任何不是2
的幂或其加法的分数总是导致在浮点数尾数的最后一位出现的一些舍入。 Javascript通常使用double
类型,其精度高达53位(大约16位小数) - 请参阅double format。