Javascript代码:
var unitPrice,shippintObj;
var temp2=parseFloat(unitPrice * shippingObj.value);
document.getElementById("pAmountId"+shippingId).value =temp2.toFixed(3) ;
输出: -
563361462829470100000
Java代码:
double b;
long a;
a=456322789;
b=1234567890120.145;
System.out.println(a*b);
DecimalFormat ft=new DecimalFormat("#############################.###");
String c=ft.format(a*b);
System.out.println(c);
输出: -
5.633614628294701E20
563361462829470100000
Oracle(SQL):
select
to_char(456322789*1234567890120.145,'999999999999999999999999999999999D999')
from dual;
输出: -
563361462829470111484.4050
窗口计算器:
a=456322789;
b=1234567890120.145;
结果: -
563361462829470111484.4050
最后我的问题是当我用Java,Javascript,SQL和Windows计算器进行计算时,我的结果与Java,Javascript相同 但它不同于SQL,Windows计算器的答案。我想在Java和Javascript中获得Oracle的结果。
答案 0 :(得分:4)
您试图获得的结果太大,无法满足double
所需的精度。在Java中使用BigDecimal类来获得任意精度,但我担心你必须自己在JavaScript中实现长算术(除非你找到一个可以使用的好库。)
答案 1 :(得分:3)
这看起来像是一个浮点运算问题 - 考虑在java代码中使用BigDecimal
而不是double。