在您下降之前,请仔细阅读本问题及其完整内容。这之前没有被问到并且没有被解决过。
我需要以这种格式生成NUMBER而不是字符串:XX.XX,无论是否有任何小数。所以,600 - > 600.00和5.5678 - > 5.57。 toFixed(2)将无法实现此结果,因为它将数字转换为字符串,但它必须是数字。 parseFloat(num.toFixed(2))无法获得正确的结果,因为在转换回数字时,parseFloat将删除任何尾随零。 60 - > “60.00” - > 60. toPrecision将转换为字符串,就像toFixed()一样,所以这个函数也不起作用。这是一个解决方案。非常感谢任何和所有的帮助。
答案 0 :(得分:3)
没有解决方法。你不能在JS编号中使用无关紧要的尾随零,就像你不能有无关紧要的前导零一样 - 他们根本没有办法以他们存储的格式在内存中表示基本上所有JavaScript实现(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2406.html)。
如果您需要将值存储为用于处理但仍跟踪精度的数字,则可以将其存储为对象,例如:600.00 - > {value: 600, decimals: 2}
。
答案 1 :(得分:0)
如果数字不是小数,则只能将数字保留在小数位后面。这是不可能的。事实上,如果我有额外的零,我的控制台会给我一个错误信息。如果你真的需要这样做,我建议你用Java做,或者做这样的事情:
var number = 123456;
var stringNumber = number.toFixed(2);
var workableNumber = round(number*100)/100;
显示数字时,请使用stringNumber。将数字用作数字时,请使用workableNumber。
答案 2 :(得分:0)
如果您只是使用数字XX.XX格式进行计算,则不需要尾随零。但是如果你需要显示'60 .00'。您可以将其转换为字符串,然后搜索“。” (点)如果存在。如果'。'不存在,只需添加'.00'..如果您无法理解我的解释,请阅读我的代码。
<script>
var num1 = "60.75";
var num2 = "60";
alert(printDec(num1));
alert(printDec(num2));
function printDec(num){
if(num.indexOf('.')<00){
return num+".00";
}
else{
return parseFloat(num)+"";
}
}
</script>