2013-12-17 3 views
2

Ну я только что получил проблему, с простым следующим кодом:ActionScript Количества добавить и вычитать странное поведение

trace(0.01+0.05); // 0.060000000000000005 
trace(0.03-0.01); // 0.019999999999999997 

Я имею в виду я просто хочу, 0,01 + 0,05 дают мне 0.06 и 0.03-0.01 дает мне 0,02. У кого-то есть идея, как получить правильные результаты?

+0

Возможный дубликат [Является ли скрипт с плавающей запятой JavaScript?] (Http://stackoverflow.com/questions/588004/is-javascripts-floating-point-math-broken) – dan04

ответ

1

Неточность обусловлена ​​арифметикой с плавающей запятой. 0.01, 0.05 и 0.03 - все Литералы с плавающей запятой. Не каждое число (фактически, очень мало чисел) может быть представлено точно в плавающей точке.

Например, 0.5 может быть, но 0.06 не может. Как правило, первые 15 значимых цифр будут правильными.

Для получения более подробной информации см http://en.wikipedia.org/wiki/Floating_point

+1

Хорошо спасибо, я поеду в int и разделите на 100 для отображения, так как я просто хочу точность 2. –

+1

Это довольно распространенный способ обойти эту проблему. Кстати, вы моделируете деньги? Если это так, используйте тип валюты, если она доступна. – Bathsheba

Смежные вопросы