Почему выводится вместо нормального результата только нули при умножении функции?
Нужно сделать конвертер валюты, при этом строго по инструкции, без добавлений своего.
<div class="main"> <h2>Введите сумму в рублях</h2> <div class="converter"> <div class="input"> <input class="value" type="number" id="value"> <select class="currency-selector"> <option value="USD">USD</option> <option value="EUR">EUR</option> </select> </div> <div class="output"> <button onclick="сonvertCurrency()">Узнать</button> <h3 class="dollar" id="dollar"></h3> </div> </div> </div> |
<div class="main"> <h2>Введите сумму в рублях</h2> <div class="converter"> <div class="input"> <input class="value" type="number" id="value"> <select class="currency-selector"> <option value="USD">USD</option> <option value="EUR">EUR</option> </select> </div> <div class="output"> <button onclick="сonvertCurrency()">Узнать</button> <h3 class="dollar" id="dollar"></h3> </div> </div> </div>
function сonvertCurrency() { fetch('https://v6.exchangerate-api.com/v6/353aabff81d47df9512e9535/latest/RUB') .then(function (response) { return response.json(); }) .then(function (data) { console.log(data); document.querySelector('.dollar').innerHTML = Math.round(data.conversion_rates.USD * document.querySelector('.value').value); }) } |
function сonvertCurrency() { fetch('https://v6.exchangerate-api.com/v6/353aabff81d47df9512e9535/latest/RUB') .then(function (response) { return response.json(); }) .then(function (data) { console.log(data); document.querySelector('.dollar').innerHTML = Math.round(data.conversion_rates.USD * document.querySelector('.value').value); }) }
Конвертер валюты должен содержать тысячные числа, но при умножении выводятся только нули. При этому же были переброваны варианты:
toFixed(4);
.toLocaleString()
parseFloat(document.querySelector('.value').value))
Вероятно я их неправильно написал, но делал примерно следующее с toFixed(4), причем это был самый рабочий вариант:
function сonvertCurrency() { fetch('https://v6.exchangerate-api.com/v6/353aabff81d47df9512e9535/latest/RUB') .then(function (response) { return response.json(); }) .then(function (data) { console.log(data); document.querySelector('.dollar').innerHTML = Math.round(data.conversion_rates.USD * document.querySelector('.value').value).toFixed(4); }) } |
function сonvertCurrency() { fetch('https://v6.exchangerate-api.com/v6/353aabff81d47df9512e9535/latest/RUB') .then(function (response) { return response.json(); }) .then(function (data) { console.log(data); document.querySelector('.dollar').innerHTML = Math.round(data.conversion_rates.USD * document.querySelector('.value').value).toFixed(4); }) }
P.S. Если не сложно, помогите мне еще сделать чтобы при выборе EUR рубли переводились в евро, пожалуйста :)
Дополнительно:
Math.round убери
Проблема возникает из-за того, что значение, которое вы получаете из поля ввода, имеет тип строки (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); |
// Функция для конвертации валюты 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 )
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Проблема с выводом нулей вместо ожидаемого результата при умножении функции может быть вызвана несколькими причинами. Давайте рассмотрим несколько возможных причин и способы их решения.
1. Неправильное использование переменных или операторов:
Убедитесь, что вы правильно используете переменные и операторы в вашей функции умножения. Например, проверьте, что вы правильно передаете аргументы в функцию и используете оператор умножения (*).
2. Некорректный тип данных:
Проверьте тип данных, которые вы используете при умножении. Если вы умножаете строки, то результат будет нулевым. Убедитесь, что вы умножаете числа, а не строки. Преобразуйте строки в числа, если необходимо.
3. Ошибка в логике функции:
Проверьте вашу функцию умножения на наличие ошибок в логике. Возможно, вы где-то допустили ошибку, которая приводит к некорректному результату. Попробуйте просмотреть каждый шаг выполнения функции и убедитесь, что все правильно.
Пример кода на PHP с использованием тега
: <pre lang="php"> function multiply($num1, $num2) { return $num1 * $num2; } $num1 = 5; $num2 = 10; $result = multiply($num1, $num2); echo $result;
Если после выполнения вышеуказанных шагов проблема не решена, рекомендуется проверить другие части кода, которые могут повлиять на результат. При необходимости обратитесь к дебаггеру или логированию, чтобы выявить ошибку.