如何在输入上转换为小数点后 2 位

How can I convert to 2 decimal places on inputs?

本文关键字:小数点 转换 输入      更新时间:2023-09-26

我怎样才能做一个脚本来乘以 2 个输入并求和结果,我的问题是:"我怎样才能在每个输入上放 2 位小数?

 soles * cost      = subtotal
 subtotal + dolares = total  

这是我的观点 html

   <label>Sum Soles :</label>
   <input id="soles" value="2233.3234333" /> 
   <label>Sum Dolars :</label>
   <input id="dolars" value="3244.3566" />
   <br/><br/>
   <label>Cost of Dolar</label>
   <input type="text" id="cost" maxlength="5" onchange="doMath();" />
   <label>Total Soles to Dolars</label>
   <input id="subtotal" readonly="readonly" />
   <br/><br/>  
   <label>SUM TOTAL</label>
   <input id="total" readonly="readonly" />  

这是我的脚本

<script type="text/javascript">
function doMath()
{
    // Capture the entered values of two input boxes
    var soles = document.getElementById('soles').value;
    var cost = document.getElementById('cost').value;
    var dolares=document.getElementById('dolars').value;
    // Add them together and display
    var subtotal = parseFloat(soles) * parseFloat(cost);
    document.getElementById('subtotal').value = subtotal;
    var total = parseFloat(subtotal) + parseFloat(dolars);
    document.getElementById('total').value = total;
}
</script>

我期待结果

Sum Soles : 2233.32
Sum Dolars 3244.36
Cost  : 1.2
Total Soles to dolars = 2679,98
Total :5924,34

请有人可以帮助我吗?

我将不胜感激

您可以使用.toFixed(2)或数学Math.floor(number * 100) / 100 ->它们是可互换的,但.toFixed()返回一个字符串,因此请记住这一点

function doMath()
{
    // Capture the entered values of two input boxes
    var soles = document.getElementById('soles').value;
    var costo = document.getElementById('costo').value;
    var dolares=document.getElementById('dolares').value;
    // Add them together and display
    var subtotal = Math.floor(parseFloat(soles) * 100) / 100 * Math.floor(parseFloat(costo) * 100) / 100;
    document.getElementById('subtotal').value = subtotal.toFixed(2);
    var total = parseFloat(subtotal) + parseFloat(dolares);
    document.getElementById('total').value = total;
}
您可以使用

number.toFixed(2)原型。

编辑:这将返回 Costo 的1.20,而不是1.2。如果您希望四舍五入到小数点后 2 位,您可以使用 tak3r 提供的Math.round方法。

这是一个做同样事情的原型:

Number.prototype.roundToDecimals = function(decimals) {
    decimals = decimals || 0;
    var pow = Math.pow(10, decimals);
    return Math.round(this * pow) / pow;
};
> (1.234567).roundToDecimals(2); 
1.23
> (1.2).roundToDecimals(2); 
1.2