2013-07-17 285 views
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> 

这里是一个fiddle

我失去了什么?它一定是一件小事。

感谢

+0

您使用的是''''''在小提琴的时候,你应该用一个小数点 – turnt

+0

是不是逗号作为小数点通常是货币在欧洲的事情? – j08691

+1

有关一些见解和想法,请参阅以下相关问题:http://stackoverflow.com/q/5314237/1253312 –

回答

2

使用小数点.,而不是逗号(,)为parseFloat读取正确数量.. working jsFiddle

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

你也应该当您插入数的使用小数点其他输入。如果你仍然想使用逗号出于某种原因,你可以通过代码点替换逗号:

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

(thiis将两个点和逗号使用率工作)你有一个逗号,它应该是一个点。

<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> 
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> 
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;