# 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."
5条答案
按热度按时间dwthyt8l1#
z.round(2)
或x.round(3)
是最简单的解决方案。请参见http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round。也就是说,这只能确保它不超过那么多位数,在1/3的情况下,这是好的,但如果你说
0.25.round(3)
,你会得到0.25,而不是0.250。gmxoilav2#
您可以使用
sprintf
:jq6vz3qz3#
我通常只使用开放代码进行转换,类似于:
Ruby为这样的表达式调用Kernel#format,因为String有一个核心运算符%定义在它上面。如果你觉得有什么印象的话,可以把它当作Ruby* 的 *printf。
3okqufwl4#
Rubocop建议使用
#format
而不是#sprintf
,并使用带注解的字符串标记。#format
的语法为示例:
参考文献:
5jvtdoz25#
你可以用看跌期权