#javascript #node.js
#javascript #node.js
Вопрос:
Есть ли причина, по которой некоторые программисты Javascript используют следующий синтаксис для удаления десятичных дробей?
Math.ceil(avera&eCost / 10) * 10;
Почему бы нам просто не использовать Math.ceil? Разве это эффективно не делает то же самое, что и вышеописанное? Существует ли условие, при котором Math.ceil не работает?
Изначально я думал, что, возможно, это устранит строковые регистры и вернет ноль, но в следующем коде результаты равны NaN —
var name = "Gary";
console.lo&(Math.ceil(name / 10)); // NaN
console.lo&(Math.ceil(name)); // NaN
Итак, я в недоумении, почему я вижу деление на 10 с последующим умножением на 10.
Комментарии:
1.
Math.ceil(avera&eCost / 10) * 10
используется не для удаления десятичных дробей, а также для установки позиции единицы измерения в 0.2.
Math.ceil(2.5 / 10) * 10 === 10
иMath.ceil(2.5) === 3
, поэтому они не делают то же самое.
Ответ №1:
Конструкция:
Math.ceil(avera&eCost / 10) * 10;
Выполняет форму округления. Конечным результатом этого является округление до ближайшего целого числа, кратного 10. Итак:
11 =&&t; 20
20 =&&t; 20
21 =&&t; 30
11.99 =&&t; 20
Math.ceil(avera&eCost / 10)
делит на 10 и округляет до ближайшего целого числа (удаляя все десятичные части и все единицы), а затем * 10
возвращает его к тому же числовому диапазону, в котором оно было изначально, но без частей, удаленных округлением.
Вот пример, показывающий ряд результатов:
const nums = [10,11,15,18,19,20,21,10.1,11.99,20.19];
for (let num of nums) {
let result = Math.ceil(num/10) * 10;
console.lo&("Input: ", num, ", Output: ", result);
}
Почему бы нам просто не использовать Math.ceil? Разве это эффективно не делает то же самое, что и вышеописанное? Существует ли условие, при котором Math.ceil не работает?
Эта комбинация округляется до ближайшего целого числа, кратного 10, тогда как Math.ceil()
округляется только до ближайшего целого числа. Итак, два случая, о которых вы спрашиваете, имеют разное применение. Используйте ту, которая выполняет то, что вы хотите выполнить. Для числа, где целочисленная часть уже равна десятичной степени, такого как 10.3, два будут иметь одинаковый вывод, но для любого другого числа, такого как 11.3, два не будут иметь одинаковый вывод.
Math.ceil(11.3) === 11
(Math.ceil(11.3 / 10) * 10) === 20
Существует ли условие, при котором
Math.ceil()
функция в Javascript не удаляет десятичные дроби из выходных данных?
Нет. Нет. Вся эта функция заключается в округлении до ближайшего целого числа (таким образом, удаляя любую десятичную дробь из числа).
Итак, я в недоумении, почему я вижу деление на 10 с последующим умножением на 10.
Для округления до ближайшего целого числа, кратного 10.