逗号后将数字四舍五入为 2 位

IT技术 javascript math rounding
2021-03-06 18:50:46

我不知道该怎么做?我正在添加逗号数字,结果当然总是一个逗号后有太多数字的数字。任何人?

6个回答

编辑 2

像这样使用Number对象的toFixed方法:

var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roundedString); // toFixed() returns a string (often suitable for printing already)

它将 42.0054321 舍入到 42.01

它舍入 0.005 到 0.01

它将 -0.005 舍入到 -0.01(因此绝对值在 0.5 边界处舍入时增加)

jsFiddle 示例

如果您想对数字进行四舍五入,例如 0.007 到两位小数,则此示例不起作用。这样做的结果是:Math.round(0.007) -> 0.000 然后 toFixed(2) -> 0.00。实际的舍入过程应呈现 0.01。
2021-04-16 18:50:46
@Sten - 逗号还是小数点?你的问题和例子不同意。
2021-04-17 18:50:46
否决:答案不正确,因为 Math.round() 对数字进行四舍五入,从而删除所有小数。然后 toFixed(2) 所做的就是添加两个尾随零。只需 number.toFixed(2) 就可以了。
2021-04-27 18:50:46
-1:在你的例子中3.1415变成3.00
2021-04-29 18:50:46
应该做点什么,因为这个答案是错误的,其他人在盲目使用接受的答案之前可能不会阅读评论。
2021-05-11 18:50:46

更新:请记住,在 2010 年最初编写答案时,波纹管函数 toFixed() 的工作方式略有不同。toFixed() 现在似乎做了一些四舍五入,但不是以严格的数学方式。所以要小心。做你的测试......正如数学家所期望的那样,下面描述的方法可以很好地进行四舍五入。

  • toFixed()- 方法将数字转换为字符串,保留指定的小数位数。它实际上并不对数字进行四舍五入,而是截断了数字。
  • Math.round(n)- 将数字四舍五入到最接近的整数。从而转向:

0.5 -> 1; 0.05 -> 0

因此,如果您想四舍五入,请说数字 0.55555,只保留小数点后第二位;您可以执行以下操作(这是分步概念):

  • 0.55555 * 100 = 55.555
  • Math.Round(55.555) -> 56.000
  • 56.000 / 100 = 0.56000
  • (0.56000).toFixed(2) -> 0.56

这是代码:

(Math.round(number * 100)/100).toFixed(2);
例如,当您在像 > (Math.round(123.12124 * 100)/100).toFixed(4);===> 123.1200
2021-04-16 18:50:46
您忘记更改舍入数学,如下所示:Math.round(123.12124 * 10000)/10000).toFixed(4)。这是如果您想四舍五入到小数点后第 4 位。
2021-04-17 18:50:46
不通过 1.005
2021-04-17 18:50:46
我用同样的方法。效果很好
2021-04-20 18:50:46
错误:toFixed()轮数,所以它不是一个截断。参见developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
2021-05-10 18:50:46

这对我有用:

var new_number = float.toFixed(2);

例子:

var my_float = 0.6666

my_float.toFixed(3) # => 0.667
认为这个问题是它没有“舍入”数字,所以0.6666.toFixed(3)变成0.6660.667. @Andrei 似乎有正确的四舍五入解决方案。
2021-04-20 18:50:46
最短和最好。这应该是公认的答案。
2021-04-27 18:50:46
哈!没关系。我只是测试它和toFixed()完美的作品:0.6666.toFixed(3) # => 0.667我会将其添加到您的答案中。
2021-05-16 18:50:46

以前的答案忘记再次将输出输入为数字。有几种方法可以做到这一点,这取决于您的口味。

+my_float.toFixed(2)

Number(my_float.toFixed(2))

parseFloat(my_float.toFixed(2))
我喜欢“+”符号,非常优雅
2021-04-25 18:50:46
在我看来,这是最好的答案。它很简单,很短,结果是一个 NUMBER
2021-05-01 18:50:46

这不是真正的 CPU 友好,但是:

Math.round(number*100)/100

按预期工作。