Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Округление Math.round (https://javascript.ru/forum/misc/22036-okruglenie-math-round.html)

jonygreen 04.10.2011 10:20

Округление 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 );


Помогите решить задачку)

ksa 04.10.2011 11:34

Цитата:

Сообщение от jonygreen
Такое вот решение не проходит

А какое нужно-то? :)

Чему таки должно равняться 0.1+0.2?

jonygreen 04.10.2011 11:47

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

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


Выдает 0.30000000000000004

walik 04.10.2011 11:53

var first = 0.1;
var second = 0.2;
var sum = ( first + second).toPrecision(1);
alert ( sum );

GuardCat 04.10.2011 14:47

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


Как-то странновато,мягко говоря.

ksa 04.10.2011 15:06

Цитата:

Сообщение от GuardCat
Как-то странновато,мягко говоря.

Эо обычный подход к вычислениям с "погрешностью"...

GuardCat 04.10.2011 15:14

А есть у этого метода отличия (плюсы/минусы) от .toPrecision()?

ksa 04.10.2011 15:19

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

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

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


Часовой пояс GMT +3, время: 11:23.