删除不重要的小数点的Ruby代码?
我想得到一个优雅的代码,删除不重要的结束零,例如:删除不重要的小数点的Ruby代码?,ruby,string,decimal,precision,rational-number,Ruby,String,Decimal,Precision,Rational Number,我想得到一个优雅的代码,删除不重要的结束零,例如: 29.970 => 29.97 29.97 => 29.97 25.00 => 25 25.0 => 25 我试过: argument.to_r.to_f.to_s 但并非在所有情况下都有效,例如,25.00给出25.0,尾随零仅在数字为字符串时有效: def strip_trailing_zero(n) n.to_s.sub(/\.?0+$/, '') end strip_trailing_zero(29.9
29.970 => 29.97
29.97 => 29.97
25.00 => 25
25.0 => 25
我试过:
argument.to_r.to_f.to_s
但并非在所有情况下都有效,例如,25.00给出25.0,尾随零仅在数字为字符串时有效:
def strip_trailing_zero(n)
n.to_s.sub(/\.?0+$/, '')
end
strip_trailing_zero(29.970) # => "29.97"
strip_trailing_zero(29.97) # => "29.97"
strip_trailing_zero(25.00) # => "25"
strip_trailing_zero(25.0) # => "25"
这将转换传入的浮点数并将其转换为字符串,然后使用简单的子搜索和替换来修剪尾随的0和小数点(可选)
如果需要的话,您可以找出如何将它们转换回整数和浮点。如果传递整数/fixnum,这将删除重要的尾随零。如何防止这种情况发生也是您需要解决的问题。只有当数字是字符串时,尾随的零才有意义:
def strip_trailing_zero(n)
n.to_s.sub(/\.?0+$/, '')
end
strip_trailing_zero(29.970) # => "29.97"
strip_trailing_zero(29.97) # => "29.97"
strip_trailing_zero(25.00) # => "25"
strip_trailing_zero(25.0) # => "25"
这将转换传入的浮点数并将其转换为字符串,然后使用简单的子搜索和替换来修剪尾随的0和小数点(可选)
如果需要的话,您可以找出如何将它们转换回整数和浮点。如果传递整数/fixnum,这将删除重要的尾随零。如何防范这种情况也是您需要解决的问题。您尝试过吗?它适用于你提供的4个箱子。你试过了吗?它适用于您提供的4种情况。如果您将其传递为整数,则它也将从整数值中移除0,因此不要传递整数值20=>2因为该点将从浮点中移除尾随的零,因此它不应传递为整数。这是一件容易防范的事情。您需要从regex n.to_.sub/\.0+$/中删除问号,如果您将其传递为整数,那么它也将从整数值中删除0,因此不要传递整数值20=>2因为该点是从浮点中删除尾随零,所以它不应该传递为整数。这是一件很容易防范的事情。您需要删除regex n.to_.sub/\.0+$/,,