Нужно оставить 4 символа после точки в float. Число number = 0.00028
number.toFixed(4);
возвращает 0.0003
. Мне нужно чтобы число не округлялось. Есть ли в js что-то готовое на такой случай? Или нужно функцию писать?
источник
Number.prototype.toFixedNoRounding = function(n) {
const reg = new RegExp(`^-?\\d+(?:\\.\\d{0,${n}})?`, 'g')
const a = this.toString().match(reg)[0];
const dot = a.indexOf('.');
if (dot === -1) {
return a + '.' + '0'.repeat(n);
}
const b = n - (a.length - dot) + 1;
return b > 0 ? (a + '0'.repeat(b)) : a;
}
console.log((3.1999).toFixedNoRounding(3)); // 3.199
console.log((3.19923413412349).toFixedNoRounding(3)); // 3.199
console.log((3.01).toFixedNoRounding(3)); // 3.010
console.log((3.01).toFixedNoRounding(4)); // 3.0100
console.log((3.01).toFixedNoRounding(5)); // 3.01000
console.log((3).toFixedNoRounding(3)); // 3.000
console.log((-3).toFixedNoRounding(3)); // -3.000
console.log((0.00028).toFixedNoRounding(4)); // 0.0002
console.log(
(0.00028).toFixed(5).replace(/.$/,'') // 0.0002
)
function toFixedHard(number, x) {
return parseFloat(number.toFixed(x + 1).slice(0, -1));
}
console.log( toFixedHard(0.2, 0) );
console.log( toFixedHard(0.128, 1) );
console.log( toFixedHard(0.228, 2) );
console.log( toFixedHard(0.4428, 3) );
console.log( toFixedHard(0.00028, 4) );
console.log( toFixedHard(0.000280003974, 11) );
const toFixedHard = (number, x) => {
const s = String(number)
let [ a, b = '' ] = s.split('.')
return parseFloat(a + '.' + b.substring(0, x))
}
console.log( toFixedHard(6.997, 1) ); // 6.9
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь достучаться из расширения chrome к dom страницыДля этого создал два js-файла
Есть select с записанными значениями из массиваНужно с помощью перебора вывести в какой части массива находится значение select
Создаю форму с кучей форм ввода даты datepickerов (вызов датепискеров onclick)