Если вам нужен не валютный формат, вы можете сделать это, например,
function numberFormat(num) {
return num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
}
console.log(numberFormat(5000)); // 5,000.00
, и вы можете решить, хотите ли вы .
или ,
, изменив $1,
или $1.
здесь
num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
Простой способ сделать валютный формат - использовать JavaScript Интернационализация API, и это динамически c.
Объект Intl.NumberFormat
является конструктор для объектов, которые разрешают форматирование чисел с учетом языка.
function App() {
let [inputValue, setInputValue] = React.useState("");
function onChange(event) {
let value = new Intl.NumberFormat("en-US").format((event.target.value).replace(/\D+/g, ""));
setInputValue(value === '0' ? '' : value);
}
return (
<div className="App">
<input type="text" onChange={onChange} value={inputValue} />
</div>
);
}
замените пустую строку, если не число
(event.target.value).replace(/\D+/g, "")
проверьте рабочий пример здесь
Однако в долларах США.
В разных странах существуют разные соглашения для отображения значений.
JavaScript делает его очень простым с помощью ECMAScript Интернационализация API , сравнительно новый браузерный API, который предоставляет множество функций интернационализации, таких как форматирование даты и времени.
Он очень хорошо поддерживается:
const formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
})
formatter.format(1000) // "$1,000.00"
formatter.format(10) // "$10.00"
formatter.format(123233000) // "$123,233,000.00"
minimumFractionDigits
свойство устанавливает часть дроби, которая всегда будет на выходе ст 2 цифры. Вы можете проверить, какие другие параметры вы можете использовать на странице NumberFormat MDN .
В этом примере создается средство форматирования чисел для валюты евро для итальянской страны:
const formatter = new Intl.NumberFormat('it-IT', {
style: 'currency',
currency: 'EUR'
})