我有一个像 30.6355 这样代表金钱的数值,如何四舍五入到小数点后两位?
我有一个像 30.6355 这样代表金钱的数值,如何四舍五入到小数点后两位?
I have a numeric value like 30.6355 that represents money, how to round to 2 decimal places?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
处理货币时不应使用
double
或float
类型:它们的小数位数过多且偶尔会出现舍入错误。金钱可能会从这些漏洞中掉出来,并且在错误发生后很难追查到错误。处理金钱时,请使用固定的小数类型。在 Ruby(和 Java)中,使用 BigDecimal。
You should not use
double
orfloat
types when dealing with currency: they have both too many decimal places and occasional rounding errors. Money can fall through those holes and it'll be tough to track down the errors after it happens.When dealing with money, use a fixed decimal type. In Ruby (and Java), use BigDecimal.
Ruby 1.8:
Ruby 1.9:
在 1.9 中,round< /a> 可以四舍五入到指定的位数。
Ruby 1.8:
Ruby 1.9:
In 1.9, round can round to a specified number of digits.
这将针对一些有用的案例 - 写得不好,但它有效!请随意编辑。
round(18.00) == 18.0
round(18.99) == 18.99
round(17.9555555555) == 17.96
round(17.944444444445) = = 17.95
round(15.545) == 15.55
round(15.55) == 15.55
round(15.555) == 15.56
圆(1.18) == 1.18
圆(1.189) == 1.19
This will round for some useful cases - not well written but it works! Feel free to edit.
round(18.00) == 18.0
round(18.99) == 18.99
round(17.9555555555) == 17.96
round(17.944444444445) == 17.95
round(15.545) == 15.55
round(15.55) == 15.55
round(15.555) == 15.56
round(1.18) == 1.18
round(1.189) == 1.19