【发布时间】:2010-04-23 09:57:42
【问题描述】:
我想在我的应用程序中为基于数学的模块从 Java 切换到脚本语言。这是由于 mathy Java 的可读性和功能限制。
例如,在 Java 中我有这个:
BigDecimal x = new BigDecimal("1.1");
BigDecimal y = new BigDecimal("1.1");
BigDecimal z = x.multiply(y.exp(new BigDecimal("2"));
如您所见,如果没有 BigDecimal 运算符重载,简单的公式很快就会变得复杂。
使用双打,这看起来不错,但我需要精度。
我希望在 Scala 中我可以做到这一点:
var x = 1.1;
var y = 0.1;
print(x + y);
默认情况下我会得到类似小数的行为,可惜 Scala 默认不使用小数计算。
然后我在 Scala 中执行此操作:
var x = BigDecimal(1.1);
var y = BigDecimal(0.1);
println(x + y);
我仍然得到一个不精确的结果。
是不是我在 Scala 中做得不对?
也许我应该使用 Groovy 来最大化可读性(默认使用小数)?
【问题讨论】:
-
您真的确定使用 BigDecimal 是正确的做法吗?你在做什么样的计算?
-
我无法验证 Scala 中 BigDecimal 的问题。它至少在 2.8.1 中按预期工作
-
var x:BigDecimal = 11.0 应该是准确的,并且 x = x/10.0 应该是快乐的。
标签: java math scala groovy bigdecimal