使用Java,JavaScript,Oracle和Windows Calculator进行乘法

时间:2012-02-06 11:24:18

标签: java javascript windows oracle

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的结果。

2 个答案:

答案 0 :(得分:4)

您试图获得的结果太大,无法满足double所需的精度。在Java中使用BigDecimal类来获得任意精度,但我担心你必须自己在JavaScript中实现长算术(除非你找到一个可以使用的好库。)

答案 1 :(得分:3)

这看起来像是一个浮点运算问题 - 考虑在java代码中使用BigDecimal而不是double。