首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript:.5案例的四舍五入

JavaScript:.5案例的四舍五入
EN

Stack Overflow用户
提问于 2016-03-06 00:58:23
回答 4查看 5.2K关注 0票数 9

我所处的情况是,JavaScript函数生成数字,例如2.5。我想让这五个数字四舍五入到2,而不是Math.round的结果,在这种情况下,Math.round总是会聚集起来(忽略了奇偶规则),从而产生2。有什么比在舍入前从数字中减去0.01更优雅的方法吗?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-06 13:12:04

只需否定输入和输出到Math.round

代码语言:javascript
复制
var result = -Math.round(-num);

更详细的是:JavaScript的Math.round具有一种不寻常的特性,它将一半的情况转换为正无穷大,而不管它们是正的还是负的。例如,2.5会转到3.0,而-2.5会转到-2.0。这是一种不常见的舍入模式:将一半的情况舍入(因此-2.5将舍入到-3.0)或最接近的偶数整数更常见。

然而,它确实有一个很好的特性,即将其调整为将其转换为负无穷大的情况是微不足道的:如果这是您想要的,那么您所要做的就是否定输入和输出:

示例:

代码语言:javascript
复制
function RoundHalfDown(num) {
  return -Math.round(-num);
}

document.write("1.5 rounds to ", RoundHalfDown(1.5), "<br>");
document.write("2.5 rounds to ", RoundHalfDown(2.5), "<br>");
document.write("2.4 rounds to ", RoundHalfDown(2.4), "<br>");
document.write("2.6 rounds to ", RoundHalfDown(2.6), "<br>");
document.write("-2.5 rounds to ", RoundHalfDown(-2.5), "<br>");

票数 23
EN

Stack Overflow用户

发布于 2016-03-06 01:03:15

这样做:

代码语言:javascript
复制
var result = (num - Math.Floor(num)) > 0.5 ? Math.Round(num):Math.Floor(num);
票数 4
EN

Stack Overflow用户

发布于 2016-03-06 01:06:53

另一种方法是使用实数(而不是0.2,使用20,0.02使用2等),然后添加floatingPoints变量来除以结果(在您的例子中是2)。因此,您可以作为Number/(10^floatingPoints)进行操作。这一解决方案广泛适用于外汇公司。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35821815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档