使用Java、JavaScript、Oracle和Windows计算器进行乘法运算

Multiplication with Java, JavaScript, Oracle and Windows Calculator

本文关键字:运算 计算器 Windows Java JavaScript Oracle 使用      更新时间:2023-09-26

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

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

对我来说,这看起来像是一个浮点算术问题——考虑在java代码中使用BigDecimal而不是double。