java – Double上的数学运算结果是否完全可重复?
发布时间:2020-12-15 02:01:01 所属栏目:Java 来源:网络整理
导读:我有一个复杂的数据处理算法,使用 Java 8并使用Double作为数据类型.给定相同的输入(数十万个数据库行),该算法输出不同的Double值.有时返回值a,有时值b.这两个值交替执行每个执行. a和b之间的差值是~0.0001.我知道Double数据类型不会像Decimal那样授予确切的
我有一个复杂的数据处理算法,使用
Java 8并使用Double作为数据类型.给定相同的输入(数十万个数据库行),该算法输出不同的Double值.有时返回值a,有时值b.这两个值交替执行每个执行. a和b之间的差值是~0.0001.我知道Double数据类型不会像Decimal那样授予确切的值.但是,我不确定它是否会给出可重复的结果,假设输入完全相同.即是否有可能以不一致的方式应用舍入政策?我的目的是解释为什么我用相同的输入获得不同的值.
其他细节:我正在使用Tomcat 8运行时环境,在SAP HCP上完成部署.数据库级别的数据类型是Decimal,出于历史原因,我们需要Java级别的Double. 解决方法
订单很重要.如果每次处理的数据库行的顺序不同,它可能会产生不同的结果.这是一个简单的例子:
double d1 = 0.1; double d2 = 0.2; System.out.println(d1 + d1 + d2 + d2); System.out.println(d1 + d2 + d2 + d1); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |