当前位置: 首页 > 知识库问答 >
问题:

如何舍入浮点数,使小数点后只有两位尾随数字?

能逸清
2023-03-14

我有一个类似137.57667565656的浮点数,但我想对其进行四舍五入,使小数点后只有两个尾随数字,就像新的浮点数将是137.58一样。

到目前为止,我试过:

(Math.round((value*100)/100)).toFixed(2).toString();

但不幸的是,它将我的值舍入到137.00。它把小数加成零,为什么?

我如何才能实现上述目标?

共有3个答案

甄文彬
2023-03-14

添加两个零是因为在做所有数学之前。圆形:

如果数字的小数部分为。5或更大,参数四舍五入到下一个更高的整数。如果数字的小数部分小于。5,参数四舍五入到下一个较低的整数。

(取自此处)

你需要的是删除Math.round

(value*100)/100).toFixed(4).toString();

在JSFiddle上查看:http://jsfiddle.net/0fe5mm95/

曹理
2023-03-14

我有一个更简单的答案,适用于所有重要数字,而不仅仅是四个。JavaScript提供了一个内置的数字。toPrecision()函数,返回表示有效数字的字符串。

var value = 137.57667565656;
var strVal = value.toPrecision(4);
>> 137.6

对于这篇文章中的重要人物,人们有很多误解。查看维基百科以刷新您的记忆。请参阅@RobG的答案,了解您最初的方法不正确的原因。

东门城
2023-03-14

你期待什么?

(value*100)/100

简单地返回value的原始值,因此

Math.round((value*100)/100))

与相同:

Math.round(value)

然后您可以:

Math.round(value).toFixed(2).toString();

因此,值被舍入为整数,toFixed将添加两位小数并返回一个字符串,因此toString部分是冗余的。如果希望将值四舍五入到小数点后四位,则:

value.toFixed(4)

将完成以下工作:

var x = 137.57667565656;

console.log(x.toFixed(4)); // 137.5767

如果要将其四舍五入到2个位置,但将其表示为4,则:

Number(x.toFixed(2)).toFixed(4)  // 137.5800
 类似资料:
  • 问题内容: 假设我有,我想将其转换为。如何在Python中完成此操作? 给与不。我是Python或一般编程的新手。 我不想将其打印为字符串,结果将被进一步使用。有关此问题的更多信息,请查看 Tim Wilson的Python编程技巧:贷款和付款计算器 。 问题答案: (或的结果)正确舍入为小数点后两位。数学上,这听起来像您想要的是天花板功能。Python模块中的一个名为: 地板和天花板功能通常分别

  • 我需要将PHP中的一个小数点舍入为两位小数,以便: 变成。。。 我尝试了数字_格式,但这只是将值舍入到49.96。我不能使用substr,因为数字可能更小(如7.950)。到目前为止,我还没有找到这个问题的答案。 非常感谢您的帮助。

  • 我如何四舍五入到两个小数位?

  • 我想把54.5345四舍五入到54.54,也就是说,如果我有第三个小数位,那么我想在第二个小数位上加1。 我试过用math.round但如果第三小数小于5,它总是四舍五入

  • 问题内容: 在Java中,我试图找到一种有效的方法来根据条件将BigDecimal舍入为两位小数,即Up或Down。 最有效的方法是什么? 问题答案:

  • 问题内容: 如果值为,则应将其格式化为。如果是,那么应该是。 问题答案: 这是一个实用程序,可以将双精度舍入(而不是截断)双精度至小数位数。 例如: 原始版本;提防这个 这在小数位数很高(例如)或整数部分很大(例如)的极端情况下会严重崩溃。感谢Sloin指出这一点。 多年来,我一直在使用上面的方法将“不太大”的双精度取整到2或3个小数位(例如,以秒为单位的清理时间用于记录目的:27.9876543