动作3中的奇怪数学?

时间:2009-04-24 05:07:17

标签: flash actionscript floating-point

重复:

  

trace( ">> " + (399.6-(Math.floor(399.6))) );

打印出来

>> 0.6000000000000227

为什么?

2 个答案:

答案 0 :(得分:3)

浮点舍入错误。浮点数不能完全代表某些值,因此您看到的是使用FP数的限制。尾数(FP num中给出精度的部分)只是一定数量的位,当某些东西无法准确表示时,就会得到如上所示的结果。我知道0.1不能准确表示,所以0.6不能这样。

答案 1 :(得分:0)

基本上,浮点数的小数部分是总和:

1/2 + 1/4 + 1/8 + ...

其中每个分数是浮点表示的一位。正如paintballbob所提到的,这意味着有些数字无法表示(例如0.1)。

据我所知,AS3内置了定点十进制(虽然有第三方库)。