Ruby代码删除无关紧要的小数位?

时间:2016-06-17 22:08:30

标签: 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

2 个答案:

答案 0 :(得分:3)

仅当数字是字符串时,尾随零才有意义:

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"

这会转换传入的浮点数并将它们转换为字符串,然后使用简单的sub搜索和替换来修剪尾随0和可选的小数点。

如果有必要,你可以弄清楚如何将它们转换回整数和浮点数。如果传递整数/ fixnum,这将删除重要的尾随零。如何防范这一点也是你要弄清楚的事情。

答案 1 :(得分:0)

试试export FLASK_APP=app export FLASK_ENV=development flask run

SET FLASK_APP=app
SET FLASK_ENV=development
flask run