今天在开发的时候 遇到了一个问题,在获取数据的时候得到是个奇诡的结果,谷歌后的说明
AS3的Number与JAVA或C++的double类似,采用二进制分数而非十进制分数保存浮点部分,因此会导致不够精确。这是语言的设计思路所致。当然,从另一个思路看,它也是个BUG。
或许AS3引入double和float类型后会解决这个问题吧……
10.799999999999999
10.8
package
{
import flash.display.Sprite;
public class NumberTest extends Sprite
{
public function NumberTest()
{
var $bLevel:int = 24 ;
var $volume:Number = ($bLevel)/10* int( $bLevel/10 + 1 ) * 15/10;
$volume = 5.00000000000004
var rate:Number = Math.round( $volume * 10 )/10 ;
trace( $volume ) ;
trace( rate ) ;
// trace( 0.1 + 0.1 +0.1 +0.1 +0.1 +0.1 +0.1 +0.1 +0.1 +0.1 ) ;
// Math.round( ) ;
}
}
}