Почему результат умножения функции всегда равен нулю?

Как сделать так, чтобы при вводе суммы в рублях в конвертере валют тысячные числа отображались корректно при конвертации валюты в доллары, используя функцию `toFixed(4)` или `.toLocaleString()`, чтобы избежать отображения только нулей?
  • 30 марта 2024 г. 1:19
Ответы на вопрос 2
1. Результат умножения функции всегда равен нулю, потому что, вероятно, происходит какая-то ошибка или некорректное использование операций внутри функции. Проверьте правильность входных значений, а также логику функции, чтобы убедиться, что она выполняет те операции, которые должна.

2. Чтобы корректно отображать тысячные числа при конвертации валюты в доллары, можно использовать функцию `toFixed(4)` или метод `.toLocaleString()` для форматирования числа. Например:

```javascript
const rubles = 1000; // входная сумма в рублях
const exchangeRate = 0.014; // курс обмена валют

const dollars = rubles * exchangeRate; // конвертация в доллары

console.log(dollars.toFixed(4)); // вывод с точностью до 4 знаков после запятой
console.log(dollars.toLocaleString('en-US', { minimumFractionDigits: 4, maximumFractionDigits: 4 })); // вывод с помощью метода .toLocaleString()
```

Этот код позволит корректно отображать тысячные числа при конвертации валюты в доллары, избегая отображения только нулей.
Проблема возникает из-за того, что значение, которое вы получаете из поля ввода, имеет тип строки (string), а не число (number). Поэтому при умножении строки на число происходит неожиданное поведение. 

// Функция для конвертации валюты 
function сonvertCurrency() {
    fetch('https://v6.exchangerate-api.com/v6/353aabff81d47df9512e9535/latest/RUB')
    .then(function (response) {
        return response.json();
    })
    .then(function (data) {
        console.log(data);
        // Получение значения из поля ввода и преобразование его в число
        let inputValue = parseFloat(document.querySelector('.value').value);
        // Получение выбранной валюты из селектора
        let currency = document.querySelector('.currency-selector').value;
        // Проверка на NaN (не число)
        if (!isNaN(inputValue)) {
            // Умножение числа на соответствующий курс конвертации
            let result;
            if (currency === 'USD') {
                result = inputValue * data.conversion_rates.USD;
            } else if (currency === 'EUR') {
                result = inputValue * data.conversion_rates.EUR;
            }
            // Вывод результата с двумя знаками после запятой
            document.querySelector('.dollar').innerHTML = result.toFixed(2);
        } else {
            // Вывод сообщения об ошибке в случае некорректного ввода
            document.querySelector('.dollar').innerHTML = "Некорректное значение";
        }
    })
    .catch(function (error) {
        // Обработка ошибок fetch
        console.log("Ошибка при получении данных:", error);
    });
}

// Обработчик изменения значения селектора
document.querySelector('.currency-selector').addEventListener('change', сonvertCurrency);


Кстати, у вас в названии функции сonvertCurrency русская буква "с".
PS: как весело отвечать с gpt )
Похожие вопросы