Пример: здесь.
Когда я ввожу 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
Спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Первый параметр в функции 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);
}