将ruby decimal格式化为不带前导零的字符串(“123”)

将ruby decimal格式化为不带前导零的字符串(“123”),ruby,Ruby,我想要像.725这样的字符串。现在,我使用%.3f,但它将前导零显示为0.725。总之,我有一个浮点数,当它有一个前导零,如0.125,当我将它转换为字符串时,我希望前导零被删除。结果:.125 谢谢 编辑: 更多示例: 0.725 -> ".725" 1.5 -> "1.500" 0.125 -> ".125" 2.456 -> "2.456" 潜在解决方案: 我取字符串中的第一个字符,如果它是零,我只将它设置为空字符 def remove_leading_

我想要像
.725
这样的字符串。现在,我使用
%.3f
,但它将前导零显示为
0.725
。总之,我有一个浮点数,当它有一个前导零,如
0.125
,当我将它转换为字符串时,我希望前导零被删除。结果:
.125

谢谢

编辑:

更多示例:

0.725  -> ".725"
1.5    -> "1.500"
0.125  -> ".125"
2.456 -> "2.456"
潜在解决方案:

我取字符串中的第一个字符,如果它是零,我只将它设置为空字符

def remove_leading_zero string
  string[0] = "" if string[0] == "0"
  string
end

您可以使用.to_s方法转换为字符串,然后使用.sub替换进行中的0:

number = 0.725
puts number.to_s.sub(/[0.]{2}/, '.')
#=> .725

number = -0.725
puts number.to_s.sub(/[0.]{2}/, '.')
#=> -.725

允许您在
编号上包含值。您可以使用以下代码获得预期的输出

str = "#{"%.3f" % number}"
str = str[1..-1] if str[0] == '0'
上述代码将生成

0.725  -> ".725"
1.5    -> "1.500"
0.125  -> ".125"
2.4567 -> "2.456"
解决方案 您可以使用:

format('%.3f', value).sub(/^0/, '')
如果第一个字符是0后跟一个点,则删除该字符

测验
添加更多输入和所需输出的示例您是否期望类似于
1.725
的值<代码>-0.725
?您希望它们如何输出?AFAIK没有删除前导零的格式。我想删除前导零。2.4567应该被截断(“2.456”)还是四舍五入(“2.457”)?@okysabeni是否也要删除负数的前导零?例如,如果将
-0.725
转换为
“-.725”
?不适用于
100
10.0
,但我认为您可以通过使用
/\b0\/
或仅使用
子(/^0/,'')
,使用
%.3f
,前导零后面总是跟一个点来解决这个问题。真,我试图避免将“0”替换为空字符串,但在
%.3f
中无法实现。
values = [
  0.725,
  1.5,
  0.125,
  2.4567,
  0,
  10
]

values.each do |value|
  p format('%.3f', value).sub(/^0/, '')
end

#=>
# ".725"
# "1.500"
# ".125"
# "2.457"
# ".000"
# "10.000"