Ruby 将字符串 ($100.99) 转换为浮点数或 BigDecimal
Ruby convert string ($100.99) to float or BigDecimal
我正在将页面对象“$100.99”捕获为字符串。有没有办法将其转换为浮点数或 BigDecimal 作为“100.99”?
我试过 xyz.scan(/\d+/).join().to_i
但那会删除小数点。
您可以使用 $
作为分隔符拆分字符串
s = "0.99"
s.split('$')[1].to_f # 100.99
您可以使用 to_f
方法,从字符串中删除 $
后:
'0.99'.delete('$').to_f
# => 100.99
BigDecimal
相同:
require 'bigdecimal'
BigDecimal.new('0.99'.delete('$'))
# => 100.99
更多方式
使用 sub 或 gsub
2.1.3 :001 > s = "0.99"
=> "0.99"
2.1.3 :002 > s.sub('$','').to_f
=> 100.99
2.1.3 :003 > s.gsub('$','').to_f
=> 100.99
切片
2.1.3 :001 > s = "0.99"
=> "0.99"
2.1.3 :002 > s.slice! '$'
=> "$"
2.1.3 :003 > p s
"100.99"
=> "100.99"
来自 tr
2.1.3 :011 > s = "0.99"
=> "0.99"
2.1.3 :012 > s.tr('$','')
=> "100.99"
我正在将页面对象“$100.99”捕获为字符串。有没有办法将其转换为浮点数或 BigDecimal 作为“100.99”?
我试过 xyz.scan(/\d+/).join().to_i
但那会删除小数点。
您可以使用 $
作为分隔符拆分字符串
s = "0.99"
s.split('$')[1].to_f # 100.99
您可以使用 to_f
方法,从字符串中删除 $
后:
'0.99'.delete('$').to_f
# => 100.99
BigDecimal
相同:
require 'bigdecimal'
BigDecimal.new('0.99'.delete('$'))
# => 100.99
更多方式
使用 sub 或 gsub
2.1.3 :001 > s = "0.99"
=> "0.99"
2.1.3 :002 > s.sub('$','').to_f
=> 100.99
2.1.3 :003 > s.gsub('$','').to_f
=> 100.99
切片
2.1.3 :001 > s = "0.99"
=> "0.99"
2.1.3 :002 > s.slice! '$'
=> "$"
2.1.3 :003 > p s
"100.99"
=> "100.99"
来自 tr
2.1.3 :011 > s = "0.99"
=> "0.99"
2.1.3 :012 > s.tr('$','')
=> "100.99"