首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >十进制js舍入3位数[可能是个bug?]

十进制js舍入3位数[可能是个bug?]
EN

Stack Overflow用户
提问于 2016-10-12 11:42:29
回答 1查看 79关注 0票数 1

我用decimal.js来用数字来计算,并通过处理大数字来利用这些优点。

现在,我到了一个点,我想把数字整成一个特定的乘子。

一切正常,直到我发现了这个问题;

代码语言:javascript
运行
复制
new Decimal(750).toNearest(500,3).toNumber() //-> 500

这一行将输出500。这仅仅是一个bug,还是我在代码中犯了一个错误?如果这是个错误,我想知道为什么只发生在下面这个特定的数字上。

代码语言:javascript
运行
复制
new Decimal(75).toNearest(50,2).toNumber() //-> 100
new Decimal(7500).toNearest(5000,4).toNumber() //-> 10'000

当你在decimal.js API玩这些语句的时候

只有3位数才能正确圆整:

代码语言:javascript
运行
复制
new Decimal(300).toNearest(200,3).toNumber() //-> 200
new Decimal(450).toNearest(300,3).toNumber() //-> 300
new Decimal(600).toNearest(400,3).toNumber() //-> 400
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 11:58:17

请注意. in最近-函数:https://mikemcl.github.io/decimal.js/#modes中的第二个属性

2:迈向无限的回合(向上)

3:朝-Infinity射击(向下)

4:向最近的邻居发射子弹。如果距离相等,则从零开始。

因此,您必须考虑预期的结果应该是什么,并选择正确的舍入方法。舍入方法与位数无关。

代码语言:javascript
运行
复制
new Decimal(75).toNearest(50,2).toNumber() //-> 100
new Decimal(75).toNearest(50,3).toNumber() //-> 50
new Decimal(75).toNearest(50,4).toNumber() //-> 100
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39997743

复制
相关文章

相似问题

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