Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2013, 23:12
Новичок на форуме
Отправить личное сообщение для vaskon Посмотреть профиль Найти все сообщения от vaskon
 
Регистрация: 13.02.2013
Сообщений: 2

Сумма вещественных чисел
Всем, привет. Подскажите, пожалуйста, почему при сложении вещественных чисел получается такой результат:

i = 0; rezult = 0.01
i = 1; rezult = 0.02
i = 2; rezult = 0.03
i = 3; rezult = 0.04
i = 4; rezult = 0.05
i = 5; rezult = 0.060000000000000005
i = 6; rezult = 0.07
i = 7; rezult = 0.08
i = 8; rezult = 0.09
i = 9; rezult = 0.10
как исправить это?

Скрипт следующий:
<script>
var rezult = 0;
rezult = parseFloat(rezult);
var num = 0.01;
num = parseFloat(num);
for (var i=0; i<10; i++){
rezult += num;
document.write("i = " + i + "; rezult = " + rezult + "<br />");
}
</script>
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2013, 23:25
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

vaskon,
это магия, и ее ни чем не исправить

используй toFixed
__________________
оляля, ололо
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2013, 23:47
Новичок на форуме
Отправить личное сообщение для vaskon Посмотреть профиль Найти все сообщения от vaskon
 
Регистрация: 13.02.2013
Сообщений: 2

Спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2013, 00:00
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Потому что IEEE754.

А если кратко: нельзя в ограниченное место (у нас в лучшем случае 64 бита на число) впихнуть бесконечный набор чисел (а вещественных чисел, да что там вещественных, даже рациональных бесконечно много на любом отрезке). Приходится довольствоваться какими-то приближениями.
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2013, 11:02
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

alert(1+2==3) // true
alert(0.1+0.2==0.3) // false
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НОД более чем 2-х чисел Demath Общие вопросы Javascript 4 06.01.2013 05:27
Сложение дробных чисел demoniqus Общие вопросы Javascript 2 10.01.2012 21:15
Генератор случайных чисел с возможностью ввода диапазона. Как сделать? Sovereign Общие вопросы Javascript 3 10.06.2011 08:34
Работа с последовательностью натуральных чисел Stillife Общие вопросы Javascript 1 18.05.2011 20:03
Корректное округление вещественных чисел Бобр Общие вопросы Javascript 16 14.01.2009 18:21