Я делаю некоторые поплавка манипуляции и в конечном итоге со следующими номерами:Как исправить мой вывод для неточности с плавающей запятой?
-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. Если у меня есть шаги, как я могу получить правильный вывод?
Странно то, что в первый раз я столкнулся с этой проблемой. Возможно, я не играю с поплавком.
Ничто не может точно представлять 1/3. т. е. 3 * (1/3) == 0.99999 ... – 2008-12-08 18:49:19
И в базе 2 невозможно представить 0,1 отлично. – duffymo 2008-12-26 13:54:47
@BradGilbert Base 3 может. – 2012-07-19 06:27:04