2013-01-07 111 views
3
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Round to 2 Decimal Places</title> 
    <script type="text/javascript" 
    src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"> 
    </script> 
    <script type="text/javascript"> 
     $(function() { 
      $('input#txtNum').blur(function() { 
       var amt = parseFloat(this.value); 
       //$(this).val('$' + amt.toFixed(2)); 
       $(this).val((Math.round(amt*100))/100).toFixed(2); 
      }); 

     }); 
    </script> 
</head> 
<body> 
    Type a decimal number in the TextBox and hit Tab 
    <br /> 
    <input id="txtNum" type="text" /> 
</body> 
</html> 

,当我进入价值100.2569.The结果表明:100.26,但是当我进入56.999其表现出5-7,而不是57.00或者如果我不带小数点的表现没有小数无需两台给予价值在十进制后附加两个零。的Javascript四舍五入至小数点后两位

回答

6

你在错误的地方调用toFixed

$(this).val((Math.round(amt*100)/100).toFixed(2)); 
+0

由于其工作现在 – shiva

+0

这是使用jQuery做。这可以只使用Javascript来完成吗? – shiva

+0

@shiva jQuery与香草JavaScript并不太相似。而不是'$(this).val()',你可以简单地把结果赋给'this.value'。你需要什么样的浏览器支持?虽然更现代的浏览器支持'addEventListener',但当它存在时,您必须回退到'attachEvent',并且还可以返回到两者都不存在时直接修改元素成员。 – Sampson

0

这可以使用Javascript如下进行:

this.value = (Math.round(amt*100)/100).toFixed(2); 

如果它是一个单一的文本输入:

document.getElementById("txtNum").value = (Math.round(amt*100)/100).toFixed(2); 
+0

它看起来像代码不按预期工作。有一个额外的')'产生一个SyntaxError。 '(amt * 100)/ 100'部分与'amt'相同。 – cbliard

+0

@cbliard:从问题中提取代码“Math.round((amt * 100)/ 100).toFixed(2)”。因此,我不会检查它的功能。 – TechSpellBound

+0

相当值得注意的是:原始代码是(Math.round(amt * 100)/ 100).toFixed(2)' – cbliard

0

下面的示例代码也适用。

ProperRoundCircle = function(num, decimal){ 
return Math.round(parseFloat(Number) * Math.pow(10, decimal))/Math.pow(10, decimal); 
} 
1

更简单的比你想象:

amt.toFixed(2)