1

我在马拉松测试(一个java swing应用程序)中使用Jruby(无论如何,那是ruby,在jvm下运行:D)并且我在处理货币数字时遇到了一些麻烦。

我不使用 Rails(不知道我是否可以在马拉松比赛中使用 Rails),我不知道/没有找到如何将字符串转换为小数或双精度。

我的马拉松代码是这样的

$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 个字符串对..lol)

我虽然 ruby​​ 可以更轻松地处理这些类型的东西.. 在 java 中我会在 BigDecimails 上转换那些(使用 java.math.BigDecimal),但在纯 Ruby 上,不知道如何。

提前Thks。

4

3 回答 3

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" 
于 2011-04-15T23:07:09.720 回答
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

于 2011-04-16T10:27:20.387 回答
-1
$saldoDisponivel=($saldoDisponivel.to_f + valor.to_f).to_s

尼索...

于 2011-04-15T22:32:22.280 回答