我想要像.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
答案 0 :(得分:4)
您可以使用:
format('%.3f', value).sub(/^0/, '')
如果它是0后跟一个点,它将删除第一个字符。
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"
答案 1 :(得分:0)
您可以使用.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
答案 2 :(得分:0)
让您包含number
的价值。您可以使用以下代码获取预期输出
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"