我想从我的应用程序中的基于Math的模块切换到Java的脚本语言。这是由于mathy Java的可读性和功能限制。Scala和Java BigDecimal
对于e.g,在Java中我有这样的:
BigDecimal x = new BigDecimal("1.1");
BigDecimal y = new BigDecimal("1.1");
BigDecimal z = x.multiply(y.exp(new BigDecimal("2"));
正如你所看到的,没有BigDecimal的操作符重载,简单的公式很复杂真正的快。
随着双打,这看起来不错,但我需要的精度。
我希望在斯卡拉我可以这样做:
var x = 1.1;
var y = 0.1;
print(x + y);
,默认情况下,我会得到小数类似的行为,唉斯卡拉默认情况下不使用十进制计算。
然后,我为此在斯卡拉:
var x = BigDecimal(1.1);
var y = BigDecimal(0.1);
println(x + y);
我仍然得到一个不精确的结果。
有没有什么我不在斯卡拉正确的做?
也许我应该使用Groovy来最大化可读性(默认使用小数)?
你真的*确定使用BigDecimal是正确的事情吗?你在做什么样的计算? – 2010-04-23 10:06:43
我无法验证Scala中BigDecimal的问题。至少在2.8.1中它至少能够工作 – gerferra 2011-01-20 11:23:13
var x:BigDecimal = 11.0应该是确切的,并且x = x/10.0应该很高兴。 – ChuckCottrill 2016-10-14 23:52:57