Обрезать число до n-символов | JS
Как обрезать Number до n-чисел без конвертации типов? Я знаю способ:
String(123456789).split(0, 8) -> 12345678
Но можно ли сделать то же самое без конвертации?
const trimNumber = (n, k) => {
for (; n > 10 ** k; n /= 10) {}
return Math.floor(n);
};
const timNumber2 = (n, k) => {
return Number(String(n).split(0, k));
}
const benckmark = (number) => {
let std = {
'1': 0,
'2': 0
};
let min = {
'1': 0,
'2': 0
};
let max = {
'1': 0,
'2': 0
};
const results = Array(50000).fill(0).map((n, i) => {
const pert1 = performance.now();
const res = trimNumber(number, 15);
const pert2 = performance.now() - pert1;
std['1'] = (std['1'] + pert2) / 2;
if (min['1'] > pert2) {
min['1'] = pert2;
}
if (max['1'] < pert2) {
max['1'] = pert2;
}
const pert3 = performance.now();
const res2 = timNumber2(number, 15);
const pert4 = performance.now() - pert1;
std['2'] = (std['2'] + pert4) / 2;
if (min['2'] > pert4) {
min['2'] = pert4;
}
if (max['2'] < pert4) {
max['2'] = pert4;
}
return {
'1': res,
'2': res2
}
});
console.group("BENCHMARK RESULTS");
console.log("Среднее время выполнения", std);
console.log("Мин время выполнения", min);
console.log("Макс время выполнения", max);
console.log("Результаты выполнения", results);
console.groupEnd();
}
benckmark(13513513513545343203513512315123135153145613515612315641231234352123)
Источник: Stack Overflow на русском