2013-07-17 142 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;