Ninazu
@Ninazu

Как сделать округление в большую сторону, до определенного знака?

Допустим мне нужно округлить до третьего знака в большую сторону
20 * 30 * 0.0001 = 0.06
20 * 31 * 0.0001 = 0.07

Но из-за особенностей операций с плавающей запятой
20 * 30 * 0.0001 = 0.060000000000000005

Делаю вот так.
Math.ceil((20 * 30 * 0.0001) * 100) / 100

Но получаю 0.07 вместо 0.06
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
Winsik
@Winsik
сис.админ, недопрограммист :)
alert (
Math.ceil(((20*31*0.0001).toFixed(3)*100).toFixed(1))/100
);

toFixed - перевод числа в нужную точность
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
trampick
@trampick
Веб-разработчик
function round(a,b) {
 b=b || 0;
 return Math.ceil(a*Math.pow(10,b))/Math.pow(10,b);
}

Тоже что у вас написано:)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы