在Ruby中设置浮点的显示精度
可以在Ruby中设置浮点的显示精度吗 比如:在Ruby中设置浮点的显示精度,ruby,floating-point,precision,Ruby,Floating Point,Precision,可以在Ruby中设置浮点的显示精度吗 比如: z = 1/3 z.to_s #=> 0.33333333333333 z.to_s(3) #=> 0.333 z.to_s(5) #=> 0.33333 puts "%5.2f" % [1.0/3.0] 或者我是否必须覆盖Float的to_s方法?您可以使用sprintf: sprintf("%0.02f", 123.4564564) 我通常只在开放代码中进行转换,比如: z = 1/3 z.to
z = 1/3
z.to_s #=> 0.33333333333333
z.to_s(3) #=> 0.333
z.to_s(5) #=> 0.33333
puts "%5.2f" % [1.0/3.0]
或者我是否必须覆盖Float
的to_s
方法?您可以使用sprintf:
sprintf("%0.02f", 123.4564564)
我通常只在开放代码中进行转换,比如:
z = 1/3
z.to_s #=> 0.33333333333333
z.to_s(3) #=> 0.333
z.to_s(5) #=> 0.33333
puts "%5.2f" % [1.0/3.0]
Ruby调用这样的表达式,因为字符串上有一个。如果这对你来说有什么意义的话,可以把它看作是Ruby的printf。z.round(2)
或x.round(3)
是最简单的解决方案。看
也就是说,这只会确保它不超过那么多数字。在1/3的情况下,这很好,但是如果你说0.25。第(3)轮
你将得到0.25,而不是0.250。你可以使用puts
z = #{'%.3f' % z}
Rubocop建议使用over#sprintf
并使用带注释的字符串标记
#format
的语法为
%[flags][width][.precision]type
例如:
# Ensure we store z as a float by making one of the numbers a float.
z = 1/3.0
# Format the float to a precision of three.
format('%<num>0.3f', num: z)
# => "0.333"
format('%<num>0.5f', num: z)
# => "0.33333"
# Add some text to the formatted string
format('I have $%<num>0.2f in my bank account.', num: z)
# => "I have $0.33 in my bank account."
#通过将其中一个数字设为浮点数,确保将z存储为浮点数。
z=1/3.0
#将浮点设置为精度为3的格式。
格式(“%0.3f”,编号:z)
# => "0.333"
格式(“%0.5f”,数量:z)
# => "0.33333"
#在格式化字符串中添加一些文本
格式('我的银行帐户中有$%0.2f',num:z)
#=>“我的银行账户中有0.33美元。”
参考资料:
(0.25).round(3)
不屈服0.250
请参见安德烈亚斯·博尼尼(Andreas Bonini)的答案,了解解决这个问题的方法。有人能解释一下吗?这一个给了我一个主要的空格字符。我使用了安德烈亚斯的答案,它没有空格字符。我无法理解关于这个的文档,否则我会解释为什么lolI更喜欢这个,因为我想要round(2)
没有给出的“.00”。这有点有趣,我一生中从未使用过ruby。我不知道如何编写hello world程序,但我从来没有这样做过。我可能只是在谷歌上搜索了OP的问题并发布了答案。放上“你好,世界”
——哈哈!现在你知道如何编写hello world程序了!。。。虽然使用put
有点讽刺意味,因为显然sprintf
也能工作。@KyleStrand使用put
讽刺意味着什么?它以一种与预期相反的方式发生了什么?它是如何引起苦笑的?