Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除不重要的小数点的Ruby代码?_Ruby_String_Decimal_Precision_Rational Number - Fatal编程技术网

删除不重要的小数点的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+$/,,