十进制值的乘法

时间:2013-07-17 14:29:07

标签: javascript jquery

我遇到了一个非常奇怪的问题。 我试图乘以2个十进制值,但我得到的结果是整数/舍入数。 如果我添加小数(例如toFixed(2),它只会添加一些零)。

这是脚本:

$(document).ready(function () {
    $('.txtQuantity, .txtRate').change(function () {
      var txtQuantity = $('.txtQuantity').val();
      var txtRate = $('.txtRate').val();
      var total = parseFloat(txtQuantity) * parseFloat(txtRate);
      $('.txtTotal').val(total);
    });
});

这是html:

<table>
<tr>
<td><input type="text" class="txtQuantity" /></td>
<td><input type="text" value="12,3" class="txtRate" /></td>
<td><input type="text" disabled="disabled" class="aspNetDisabled txtTotal" /></td>
</tr>
</table>

这是一个fiddle

我缺少什么?它一定是微不足道的。

由于

5 个答案:

答案 0 :(得分:2)

使用小数点.代替逗号(,),以便parseFloat正确读取数字。working jsFiddle

<input type="text" value="12.3" class="txtRate" />

将数字插入另一个输入时,也应该使用小数点。如果你仍然想出于某种原因使用逗号,你可以用代码替换逗号:( thiis适用于点和逗号用法)

var txtQuantity = $('.txtQuantity').val().replace(/,/g,'.');
var txtRate = $('.txtRate').val().replace(/,/g,'.');

答案 1 :(得分:2)

你有一个逗号应该是一个点。

<table>
<tr>
<td><input type="text" class="txtQuantity" /></td>
<td><input type="text" value="12.3" class="txtRate" /></td>
<td><input type="text" disabled="disabled" class="aspNetDisabled txtTotal" /></td>
</tr>
</table>

答案 2 :(得分:2)

您使用逗号代替小数点。改为:

<input type="text" value="12.3" class="txtRate" />

小提琴:http://jsfiddle.net/peAZJ/6/

答案 3 :(得分:1)

如果您想要舍入到小数点后两位,您可以使用以下内容:

Math.round(num * 100) / 100;

但如果删除逗号,小提琴似乎也可以正常工作:

<td><input type="text" value="12,3" class="txtRate" /></td>

应该是这样的:

<td><input type="text" value="12.3" class="txtRate" /></td>

答案 4 :(得分:1)

var decvalue = 0.07;
var originalvalue = decvalue  * 100;
var wholevalue = Math.floor(originalvalue);
var finalvalue;

if ((originalvalue.toFixed(2) - wholevalue) > 0) {

  finalvalue = originalvalue.toFixed(2);
}
else
  finalvalue = wholevalue;