Javascript.RU

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

Округление Math.round
Решаю задачи с codeacademy, остановился на
http://www.codecademy.com/courses/ja...6#!/exercise/2

Требуется округлить результат сложения десятичных чисел

Такое вот решение не проходит:

var first = 0.1;
var second = 0.2;
var sum = Math.round( first + second );


Помогите решить задачку)
Ответить с цитированием
  #2 (permalink)  
Старый 04.10.2011, 11:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от jonygreen
Такое вот решение не проходит
А какое нужно-то?

Чему таки должно равняться 0.1+0.2?
Ответить с цитированием
  #3 (permalink)  
Старый 04.10.2011, 11:47
Новичок на форуме
Отправить личное сообщение для jonygreen Посмотреть профиль Найти все сообщения от jonygreen
 
Регистрация: 04.10.2011
Сообщений: 2

Должно ровнятся 0.3

А следующий код:
var first = 0.1;
var second = 0.2;
var sum = ( first + second );
alert ( sum );


Выдает 0.30000000000000004
Ответить с цитированием
  #4 (permalink)  
Старый 04.10.2011, 11:53
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

var first = 0.1;
var second = 0.2;
var sum = ( first + second).toPrecision(1);
alert ( sum );
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #5 (permalink)  
Старый 04.10.2011, 14:47
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

А авторы сайта предлагают (и считают правильным) такой вариант:
var first = 0.1;
var second = 0.2;
var sum;
sum=Math.round((first+second)*100)/100;


Как-то странновато,мягко говоря.
Ответить с цитированием
  #6 (permalink)  
Старый 04.10.2011, 15:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от GuardCat
Как-то странновато,мягко говоря.
Эо обычный подход к вычислениям с "погрешностью"...
Ответить с цитированием
  #7 (permalink)  
Старый 04.10.2011, 15:14
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

А есть у этого метода отличия (плюсы/минусы) от .toPrecision()?
Ответить с цитированием
  #8 (permalink)  
Старый 04.10.2011, 15:19
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

GuardCat, "метод" как метод... Хочешь пользуйся, а хочешь нет...

Вот почитай про toPrecision()
http://javascript.ru/Number/toPrecision

Он округляет... А в примере просто умножение и деление... Т.е. это вообще разные результаты в общем случае...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Округление до нужного количества знаков после запятой Shurik_ Общие вопросы Javascript 29 01.03.2020 03:35
Округление чисел sergey-16a1 Javascript под браузер 12 04.03.2015 04:01
Как убрать округление bookman Events/DOM/Window 4 02.08.2011 00:30
Корректное округление вещественных чисел Бобр Общие вопросы Javascript 16 14.01.2009 18:21