红宝石四舍五入到小数点后两位并保持零 [英] ruby round off to two decimal place and keep zero

查看:38
本文介绍了红宝石四舍五入到小数点后两位并保持零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 ruby​​ 中将数字四舍五入到小数点后两位,这样

i want to round off a number upto two decimal place in ruby such that

(0.02 * 270187).round(2) 是 5403.74 这是正确的

(0.02 * 270187).round(2) is 5403.74 which is correct

但是

(0.02 * 278290).round(2) 是 5565.8 与之前的不一致

(0.02 * 278290).round(2) is 5565.8 which is not consistent with previous one

我想让它看起来像 5565.80

i want to make it look like 5565.80

请告诉我如何在 ruby​​ 中做到这一点

Please tell me how can i do it in ruby

推荐答案

这样做可以解决问题:

> sprintf("%.2f",(0.02 * 270187))
#=> "5403.74" 
> sprintf("%.2f",(0.02 * 278290))
#=> "5565.80"
> sprintf("%.2f",(0.02 * 270187)).to_f > 100  # If you plan to Compare something with result
#=> true 

> '%.2f' % (0.02 * 270187)
#=> "5403.74"
> '%.2f' % (0.02 * 278290)
#=> "5565.80" 

演示

注意:结果始终是一个字符串,但由于您在进行四舍五入,因此我假设您无论如何都是出于演示目的而这样做的.sprintf 可以几乎以您喜欢的任何方式格式化任何数字.如果您打算将任何内容与此结果进行比较,请通过在末尾添加 .to_f 将此字符串转换为浮点数.像这样

Demo

Note: The result is always a string, but since you're rounding I assume you're doing it for presentation purposes anyway. sprintf can format any number almost any way you like. If you are planning to compare anything with this result then convert this string to float by adding .to_f at the end. Like this

这篇关于红宝石四舍五入到小数点后两位并保持零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆