Рассмотрим , используя двойную тильду: ~~
.
Возьмите номер. Умножьте значащими цифрами после десятичного знака, чтобы обрезать в нулевые места с помощью ~~
. Разделите этот множитель обратно. Прибыль.
function truncator(numToTruncate, intDecimalPlaces) {
var numPower = Math.pow(10, intDecimalPlaces); // "numPowerConverter" might be better
return ~~(numToTruncate * numPower)/numPower;
}
Я пытаюсь сопротивляться завершению вызова ~~
в parens;
alert(truncator(5.1231231, 1)); // is 5.1
alert(truncator(-5.73, 1)); // is -5.7
alert(truncator(-5.73, 0)); // is -5
EDIT: Оглядываясь назад, я непреднамеренно также обрабатывал случаи, чтобы округлить слева от десятичного числа.
alert(truncator(4343.123, -2)); // gives 4300.
Логика немного странная, ища это использование и может извлечь выгоду из быстрого рефакторинга. Но он все еще работает. Лучше повезло, чем хорошо.