Значения отображаются неточно

Пример: здесь.

Когда я ввожу 3 и удваиваю его, результат в другом поле равен 2,9999999999999996e+0. Я бы хотел, чтобы это было 3, но когда я ввожу 6, результат будет 5.999999999999999e+0

Я попытался установить экспоненциальный результат, но это не решило проблему.

<!DOCTYPE html>
    <head>
        <title>Calculator Portal</title>
    </head>

    <body>
        <p>From:</p>
        <select style = "float:left" id = "MetricAndImperial1" class = "newClass1" oninput = "Run2()">
        </select>

         <input style = "height:50%;font-size:15pt;width:1000px; border: 1px solid #000;" id = "Input1" type = "number" oninput = "Run1()" />

        <p>To:</p>

        <select style = "float:left" id = "MetricAndImperial2" class = "newClass1" oninput = "Run1()">   
        </select>

        <input style = "height:50%;font-size:15pt;width:1000px; border: 1px solid #000;" id = "Input2" type = "number" oninput = "Run2()" />
        <script>
        var units = [
          ['Inches', 0.0254],
          ['Feet', 0.3048],
          ['Furlongs', 1.828800000565]
        ];
        var selectors = document.querySelectorAll('.newClass1');

        for (var i = 0; i < units.length; i++) {
         for (var j = 0; j < selectors.length; j++) {
            var option = document.createElement('option');
            option.value = units[i][1];
            option.textContent = units[i][0];
            selectors[j].add(option);
          }
        }
        function Run1() {
          var SpecialValue = document.getElementById("Input1").value * document.getElementById("MetricAndImperial1").value / document.getElementById("MetricAndImperial2").value;
          document.getElementById("Input2").value = SpecialValue.toExponential();

        }

        function Run2() {
          var SpecialValue = document.getElementById("Input2").value * document.getElementById("MetricAndImperial2").value / document.getElementById("MetricAndImperial1").value;
          document.getElementById("Input1").value = SpecialValue.toExponential();
        }
        </script>
    </body>
</html>

Я ожидаю увидеть 3.0+e0 в преобразованном поле, но вместо всего этого я получаю 2.9999999999999996e+0

Спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первый параметр в функции toExponential можно использовать для указания количества цифр после запятой.

По умолчанию функция отображает столько цифр, сколько необходимо для указания числа.

Поэтому, чтобы решить вашу проблему, я установил количество цифр, отображаемых во втором вводе, равным количеству цифр, введенных в ваш первый ввод, и, похоже, это работает.

Вот пример: https://jsfiddle.net/mftdkboc/

Просто чтобы уточнить, я добавил document.getElementById("Input1").value.length внутри вашей функции toExponential.

function Run1() {
  var SpecialValue = document.getElementById("Input1").value * document.getElementById("MetricAndImperial1").value / document.getElementById("MetricAndImperial2").value;
  document.getElementById("Input2").value = SpecialValue.toExponential(document.getElementById("Input1").value.length);

}

Другие вопросы по теме