我想格式化我的数字,总是显示2小数点后,四舍五入适用的地方。

例子:

number     display
------     -------
1          1.00
1.341      1.34
1.345      1.35

我一直在用这个:

parseFloat(num).toFixed(2);

但是它把1显示为1,而不是1.00。


当前回答

你没有告诉我们全部情况。

alert(parseFloat(1). tofixed(2))显示1.00在我的浏览器,当我粘贴到位置栏。 然而,如果你事后对它做了一些事情,它就会恢复。

alert(parseFloat(1).toFixed(2)) 变量数 = 2 document.getElementById('spanId').innerHTML = (parseFloat(num).toFixed(2) - 1) <span id=“spanId”></span>

shows 1 and not 1.00

其他回答

这是用的安全解。这将修复。15的舍入

function myFunction(a) {

    return Math.round((a + Number.EPSILON) * 100) / 100
}

如果你已经在使用jQuery,你可以看看如何使用jQuery数字格式插件。

该插件可以返回格式化的数字作为字符串,你可以设置小数,和千位分隔符,你可以选择显示的小数的数量。

$.number( 123, 2 ); // Returns '123.00'

你也可以从GitHub获得jQuery数字格式。

RegExp -替代方法

在输入时,你有字符串(因为你使用解析),所以我们可以通过只使用字符串操作和整数计算得到结果

let toFix2 = (n) = > n.replace (d / \(?) -(+)。\ \ \ \ d (d + 1) / (_), s, i、d (r) = {> 让k= (+r[0]>=5)+ +d - (r==5 && s=='-'); 返回s +(+i+(k>99)) + "。"(k +(> 99%) ? ? 9: 00”(k≥0 " k " + k)); }) / /测试 console.log toFix2(“1”)); console.log (toFix2 1.341”()); console.log (toFix2 1.345”()); console.log (toFix2 1.005”());

解释

s is sign, i is integer part, d are first two digits after dot, r are other digits (we use r[0] value to calc rounding) k contains information about last two digits (represented as integer number) if r[0] is >=5 then we add 1 to d - but in case when we have minus number (s=='-') and r is exact equal to 5 then in this case we substract 1 (for compatibility reasons - in same way Math.round works for minus numbers e.g Math.round(-1.5)==-1) after that if last two digits k are greater than 99 then we add one to integer part i

你在找地板吗?

变量数 = 1.42482; var num2 = 1; var fnum = Math.floor(num).toFixed(2); var fnum2 = Math.floor(num2).toFixed(2); console.log(fnum + “ 和 ” + fnum2);两个值均为 1.00

var quantity = 12;

var import1 = 12.55;

var total = quantity * import1;

var answer = parseFloat(total).toFixed(2);

document.write(answer);