#javascript #numbers #currency #cryptocurrency
#javascript #числа #Валюта #криптовалюта
Вопрос:
В моем коде я пытаюсь создать калькулятор, который конвертирует разные валюты с помощью Javascript. Я бы хотел, чтобы конечный результат был в форме с правильными запятыми в форме Соединенных Штатов, поэтому, например, если число было 1000000,3, я бы хотел, чтобы оно отображалось как 1,000,000.30
Я пытался использовать toFixed, toLocaleString и parseFloat, используя toFixed для округления до 2 знаков после запятой, toLocaleString для правильного форматирования запятой и parseFloat для преобразования toFixed и toLocaleString в число, чтобы они могли работать друг с другом.
Проблема в том, что когда я использую toFixed, а затем toLocaleString , toFixed сделает исходное число 1000000,30, но тогда toLocaleString избавится от последнего 0, что даст конечный результат 1,000,000.3 . В качестве альтернативы, когда я попытался изменить порядок и использовать toLocaleString, а затем toFixed , toLocaleString делает его 1,000,000.3 , но затем toFixed обрабатывает первую запятую как десятичную, делая конечный результат 1,000 вместо 1,000,000.30 . Есть ли что-то, чего мне не хватает, или другая стратегия для этого, о которой я не знаю? Я новичок в программировании, поэтому все предложения приветствуются 🙂
(вывод приведенного ниже кода можно увидеть здесь: https://xrpalerts.000webhostapp.com/testing_ground.html )
<!DOCTYPE html>
<html>
<body>
<script>
var CalculatorResult = 1000000.3
var CalculatorResultLocale = parseFloat(CalculatorResult).toLocaleString("us-EN");
var CalculatorResultLocaleFixed = parseFloat(CalculatorResultLocale).toFixed(2);
document.write(CalculatorResultLocale);
</script>
<br>
<script>
document.write(CalculatorResultLocaleFixed);
</script>
<br>
<br>
<script>
var CalculatorResultFixed = parseFloat(CalculatorResult).toFixed(2);
var CalculatorResultFixedLocale = parseFloat(CalculatorResultFixed).toLocaleString("us-EN");
document.write(CalculatorResultFixed);
</script>
<br>
<script>
document.write(CalculatorResultFixedLocale);
</script>
</body>
</html>
Ответ №1:
Вы можете сделать это так
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
var num1 = 1000000.3
console.log(formatter.format(num1))