在Ruby中设置浮点的显示精度
是否有可能在Ruby中设置浮点的显示精度?
就像是:
z = 1/3 z.to_s #=> 0.33333333333333 z.to_s(3) #=> 0.333 z.to_s(5) #=> 0.33333
或者我必须重写Float
的to_s
方法?
z.round(2)
或x.round(3)
是最简单的解决scheme。 请参阅http://www.ruby-doc.org/core-1.9.3/Float.html#method–round 。
这就是说,这只能确保它不会超过那么多的数字。 在三分之一的情况下罚款,但如果你说0.25.round(3)
你会得到0.25,而不是0.250。
你可以使用sprintf:
sprintf( "%0.02f", 123.4564564)
我通常只是在开放代码中进行转换,如下所示:
puts "%5.2f" % [1.0/3.0]
Ruby为这样的expression式调用Kernel#格式 ,因为String在其上定义了一个核心操作符% 。 把它看作是用于Ruby的printf,如果它响起的话。
你可以使用puts
z = #{'%.3f' % z}