Ведущие и конечные нули в числах

Я работаю над проектом, в котором мне нужно отформатировать входящие номера следующим образом:

###.###

Однако я заметил некоторые результаты, которых я не ожидал. Следующее работает в том смысле, что я не получаю ошибку:

 console.log(07); // or in my case: console.log(007); 

Всего 2 ответа


1) 007.000 - это синтаксическая ошибка, потому что 007 является восьмеричным целочисленным литералом , к которому вы затем добавляете часть с плавающей запятой. (Попробуйте console.log(010) . Это печатает 8.)

2) Вот как вы можете добиться форматирования, используя Intl.NumberFormat ...

 var myformat = new Intl.NumberFormat('en-US', { minimumIntegerDigits: 3, minimumFractionDigits: 3 }); console.log(myformat.format(7)); // prints 007.000 


Привет

Вы можете использовать подход, который использует строковые функции .split .padStart и .padEnd

Поиск по MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects / String / padStart https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd

Вот вам пример:

 const x = 12.1; function formatNumber( unformatedNumber) { const desiredDecimalPad = 3; const desiredNonDecimalPad = 3; const unformatedNumberString = unformatedNumber.toString(); const unformatedNumberArr = unformatedNumberString.split('.'); const decimalStartPadded = unformatedNumberArr[0].padStart(desiredDecimalPad, '0'); const nonDecimalEndPadded = unformatedNumberArr[1].padEnd(desiredNonDecimalPad, '0'); const formatedNumberString = decimalStartPadded + '.' + nonDecimalEndPadded; return formatedNumberString; } console.log(formatNumber(x)) 


Есть идеи?

10000