我正在尝试将转换的最终结果四舍五入到小数点后 2 位,但我不确定我需要在哪里添加 .toFixed(2(
尝试添加 .toFixed(2(; 到各个地方,但没有运气。解释如何使用它的任何地方都用数字值设置自己的变量,但我的结果因输入的金额/货币汇率而异。
<div class="container">
<form class="form">
<input type="number" onkeypress="return noenter()" class="" id="amount"/>
</div>
<div style="display:none;">
<p id="currency-1">M</p>
</div>
<div class="">
<select class="form-control" id="currency-2" required>
<option>USD</option>
<option>GBP</option>
<option>EUR</option>
<option>CAD</option>
</select>
</div>
</form>
<div class="result">
<p>
<span class="given-amount"></span>
<span class="base-currency"></span>
<span class="final-result"></span>
<span class="second-currency"></span>
</p>
</div>
var crrncy = {
'M': {
'USD': 0.80,
'GBP': 0.65,
'EUR': 0.77,
'CAD': 0.95,
'M': 1
},
}
var baseCurrencyInput = document.getElementById('currency-1');
var secondCurrencyInput = document.getElementById('currency-2');
var amountInput = document.getElementById('amount');
var toShowAmount = document.querySelector('.given-amount');
var toShowBase = document.querySelector('.base-currency');
var toShowSecond = document.querySelector('.second-currency');
var toShowResult = document.querySelector('.final-result');
function convertCurrency(event) {
event.preventDefault();
var amount = amountInput.value;
var from = baseCurrencyInput.innerText;
var to = secondCurrencyInput.value;
var result = 0;
try {
if (from == to) {
result = amount;
} else {
result = amount * crrncy[from][to];
}
} catch (err) {
result = amount * (1 / crrncy[to][from]);
}
toShowAmount.innerHTML = amount;
toShowBase.textContent = from + ' would only cost you ';
toShowSecond.textContent = to;
toShowResult.textContent = result;
}
amountInput.addEventListener('keyup', convertCurrency);
secondCurrencyInput.addEventListener('click', convertCurrency);
function noenter() {
return !(window.event && window.event.keyCode == 13);
};
我希望转换器显示到小数点后 2 位(如果可能的话向上舍入(。 例如 23 M = 18.40 美元
你。尝试添加 .toFixed(2(;去各个地方,但没有运气。
把它放在你输出值的地方:
toShowResult.textContent = result.toFixed(2);
// ------------------------------^^^^^^^^^^^
旁注:您的代码依赖于从字符串到数字的隐式转换,而不是在每个地方都执行该转换,因此有时在末尾result
包含一个字符串,有时它包含一个数字。请记住,input
元素上的value
始终是字符串。
明确地转换为数字,并尽早:
var amount = +amountInput.value;
// ----------^
var to = +secondCurrencyInput.value;
// ------^
请参阅此答案以获取各种字符串到数字选项,如上所述使用一元+
只是一个选项。
还要记住,JavaScript使用的标准IEEE-754数字类型是不精确的,不太适合金融应用程序。你可以考虑JavaScript的新BigInt
(转换为数字并除以100进行输出(,或者在得到更广泛的支持之前,许多"大整数"或"大数字"库之一。