我正在使用Jruby(无论如何都是红宝石,在jvm:D下运行)和马拉松测试(一个java swing应用程序),我在处理货币数字时遇到了一些麻烦。
我不使用Rails(不知道我是否可以使用rails甚至马拉松)并且我不知道/没有找到如何将字符串转换为小数或双倍。
我使用maraton的代码是这样的
$saldoDisponivel = get_p("com.company.app.view.layout.objetos.JTextField1", "Text")
换句话说,saldoDisponivel获取一个字符串(例如:3.232,20)。 我还有另一个字符串valor =“100,00”,当我做
时$saldoDisponivel = $saldoDisponivel + valor
当然我得到3.232,20100,00(正确添加2个字符串......)
我虽然ruby可以更轻松地处理那些类型的东西..在java中我会转换那些在BigDecimails上(使用java.math.BigDecimal)但在纯Ruby上,不知道如何。
事先说。
答案 0 :(得分:0)
你也应该在ruby中使用BigDecimal,这样你就不会有任何浮点错误:
require 'bigdecimal'
x = '3232.20'
y = '100.00'
xb = BigDecimal.new x
yb = BigDecimal.new y
r = xb + xy
r.to_s('F')
> r.to_s('F')
=> "3332.2"
答案 1 :(得分:0)
如果你更习惯使用java BigDecimal,你可以直接从马拉松脚本中使用java.math.BigDecimal。
x = java.math.BigDecimal.new '5.0'
y = java.math.BigDecimal.new '10.0'
puts x.add(y)
=> 15.0
答案 2 :(得分:-1)
$saldoDisponivel=($saldoDisponivel.to_f + valor.to_f).to_s
Forçanisso...