浮动 'unnecessary' 位数

Float with 'unnecessary' digits

我需要从字符串中生成一个数字。为此,我使用众所周知的操作,看起来像这样:

Float(string_var) rescue nil

这很好用,但是我确实有一个小问题。如果一个字符串是"2.50",我得到的变量是2.5。甚至可以创建末尾带有 'unnecessary' 0 数字的 Float 对象吗?我可以直接将 "2.50" 翻译成 2.50 吗?

简而言之,答案是否定的,因为任何 Float 在检查时都会使用 Float 的 to_s 函数,得出没有尾随零的答案。

Float 将始终为您提供一个可以按您希望的方式进行解释的数值。在您的示例中,您 获得一个浮点值(给定一个字符串,该字符串是一个可解析的浮点数)。那么您要问的是如何显示该值 尾随零。为此,您需要将浮点值转回字符串。

最简单的方法是使用您的一位受访者提供的格式,即

string_var = "2.50"
float_value = Float(string_var) rescue nil # 2.5
with_trailing_zeroes = "%0.2f" % float_value # '2.50'