Как избежать того, чтобы при применении форматирования чисел я заменял часть последних цифр на 0?

#javascript #angular #typescript

#javascript #angular #typescript

Вопрос:

пример:

 new Intl.NumberFormat('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2}).format('54546464646464654650000000000000065464645')
"54.546.464.646.464.660.000.000.000.000.000.000.000.000,00"
 

Это потому, что когда я его форматирую, он помещает последние цифры в 0, и поэтому у вас нет точности в числах, которые вы показываете, например, в денежных суммах.

Как я мог это решить?

введите описание изображения здесь

Ответ №1:

Возможно, вы вводите слишком большое число. Возможно, здесь можно использовать строковое решение:

 function format(val, decimals) {
  // You cannot use variables in regex syntax (/re/) so you must create a string
  // then create the regex using RegExp constructor
  const reStr = `(\d{${decimals}})
 #javascript #angular #typescript

 #javascript #angular #typescript

Вопрос:

пример:
 new Intl.NumberFormat('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2}).format('54546464646464654650000000000000065464645')
"54.546.464.646.464.660.000.000.000.000.000.000.000.000,00"
 

Это потому, что когда я его форматирую, он помещает последние цифры в 0, и поэтому у вас нет точности в числах, которые вы показываете, например, в денежных суммах.

Как я мог это решить?

введите описание изображения здесь

Ответ №1:

Возможно, вы вводите слишком большое число. Возможно, здесь можно использовать строковое решение:


const decimalRe = new RegExp(reStr);

return val
.replace(decimalRe, ',$1') // Adds "," after last N numbers
.replace(/B(?=(d{3}) (?!d))/g, '.'); // Adds "." every 3 numbers after ","

}

const res = format("54546464646464654650000000000000065464645", 2)

console.log(res)