trace( ">> " + (399.6-(Math.floor(399.6))) );
打印出来
>> 0.6000000000000227
为什么?
答案 0 :(得分:3)
浮点舍入错误。浮点数不能完全代表某些值,因此您看到的是使用FP数的限制。尾数(FP num中给出精度的部分)只是一定数量的位,当某些东西无法准确表示时,就会得到如上所示的结果。我知道0.1不能准确表示,所以0.6不能这样。
答案 1 :(得分:0)
基本上,浮点数的小数部分是总和:
1/2 + 1/4 + 1/8 + ...
其中每个分数是浮点表示的一位。正如paintballbob所提到的,这意味着有些数字无法表示(例如0.1)。
据我所知,AS3内置了定点十进制(虽然有第三方库)。