@Victor0816

Удалить лишние знаки?

Приветствую!
Считаю количество знаков после запятой
const f = x => ( (x.toString().includes('.')) ? (x.toString().split('.').pop().length) : (0) );


Если количество знаков выше 5 хочу обрезать последующие знаки? Как правильно поступить?

И 2 вопрос. Хочу запретить вводить впереди 00, только впереди (возможность ввести только 0.)
т.е что бы числа 1000 и т.д не резало
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
Math.floor(x*100000)/100000
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
const f = n => parseFloat(n.toFixed(5));

// Tests:
f(1) // 1
f(1.12) // 1.12
f(1.1234567890) // 1.12346
f(000001) // 1
f(100000) // 100000
f(-1e5) // -100000


Upd. Если обязательно именно отбросить без округления, то надо работать как со строками:
(()=>{
  
const f = x => {
  const n = parseFloat(+x);
  const sign = Math.sign(n);
  // отсечь экпоненциальную запись (0.0000001).toString() === "1e-7"
  if (Math.abs(n) < 1e-5) return 0; 
  return sign * parseFloat(x)
    .toString()
    .split('.')
    .map((n,i) => i ? n.substring(0,5) : parseInt(n))
    .join('.');
}

// Tests:
['0000001', '0.0000101', 1.000000001,  -1e-4, -1e-5, -1e-6, 1e5, Math.E, 1, -1, 0, false, ]
  .map(n => `${n} // ${f(n)}`)
  .join('\n');
/*
0000001 // 1
0.0000101 // 0.00001
1.000000001 // 1
-0.0001 // -0.0001
-0.00001 // -0.00001
-0.000001 // 0
100000 // 100000
2.718281828459045 // 2.71828
1 // 1
-1 // 1
0 // 0
false // 0
*/
Ответ написан
Ваш ответ на вопрос

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

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