加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala和Java BigDecimal

发布时间:2020-12-16 09:40:30 所属栏目:安全 来源:网络整理
导读:我想从我的应用程序中的Java转换为基于Math的模块的脚本语言。这是由于mathy Java的可读性和功能限制。 例如,在Java中我有: BigDecimal x = new BigDecimal("1.1");BigDecimal y = new BigDecimal("1.1");BigDecimal z = x.multiply(y.exp(new BigDecimal(
我想从我的应用程序中的Java转换为基于Math的模块的脚本语言。这是由于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来最大限度地提高可读性(默认使用小数位数)?

解决方法

我不知道Scala,但是在Java中,BigDecimal(1.1)使用双重值初始化BigDecimal,因此它不完全等同于1.1。在Java中,您必须使用新的BigDecimal(“1.1”)。也许这将有助于Scala。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读