我正在做一些浮点操作,最终得到以下数字:
-0.5
-0.4
-0.3000000000000000004
-0.2000000000000000004
-0.1000000000000000003
1.10E-16
0.1
0.2
0.30000000000000000004
0.4
0.5
算法如下:
var inc:Number = nextMultiple(min, stepSize);
trace(String(inc));
private function nextMultiple(x:Number, y:Number) {
return Math.ceil(x/y)*y;
}
我理解浮点数不能总是用一个字节准确表示的事实。例如 1/3。我也知道我的步长是 0.1。如果我有步长,我怎么能得到正确的输出?
奇怪的是,这是我第一次遇到这种类型的问题。也许我玩的浮动不够。