Java、JavaScript、Oracle、およびWindows電卓による乗算

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

2 答え

必要な精度で double に収まらないほど大きな結果を得ようとしています。 Javaで BigDecimal クラスを使用して任意の精度ですが、私はJavaScriptで長いarithmeticsを実装しなければならないのではないかと心配しています(良いライブラリが見つからない限り)。

4
追加された
StackOverflowは、あなたの問題を解決したり、他の方法であなたを助けてくれる場合には、回答を受け入れることを奨励します。
追加された 著者 Alexander Pavlov,
ありがとうございました。それは本当に便利でした。
追加された 著者 Josephkingstonleo Mariamicheal,

これは私にとっては浮動小数点演算の問題のようです - あなたのJavaコードではなく、 BigDecimal の使用を検討してください。

3
追加された
あなたの指導に感謝します。しかし、私は何をしなければならない
追加された 著者 Josephkingstonleo Mariamicheal,
私はそれらをボタンを示しているので、私はjavascriptで同じ結果を取得する必要があります。
追加された 著者 Josephkingstonleo Mariamicheal,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript