0

我遇到了一个非常奇怪的问题。我试图将 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>

这是一个小提琴

我错过了什么?它一定是微不足道的。

谢谢

4

5 回答 5

2

使用小数点.而不是逗号 ( ,) 来让 parseFloat 正确读取数字..工作 jsFiddle

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

将数字插入另一个输入时,您还应该使用小数点。如果出于某种原因您仍想使用逗号,您可以通过代码用点替换逗号:(这对点和逗号都适用)

var txtQuantity = $('.txtQuantity').val().replace(/,/g,'.');
var txtRate = $('.txtRate').val().replace(/,/g,'.');
于 2013-07-17T14:30:55.810 回答
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>
于 2013-07-17T14:31:13.783 回答
2

您使用的是逗号而不是小数点。改成:

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

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

于 2013-07-17T14:31:25.560 回答
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;
于 2013-12-02T09:51:53.323 回答
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>
于 2013-07-17T14:33:55.593 回答