問題タブ [bigdecimal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
18260 参照

java - Java:文字列を有効な金額(BigDecimal)に変換する正しい方法は何ですか?

入力文字列フィールドを、有効な金額を表す BigDecimal フィールドに変換する必要があります。次に例を示します。

文字列をJavaで有効な金額に変換するために使用する正しいAPIは何ですか(例: apache commons library)?

前もって感謝します、

0 投票する
3 に答える
12652 参照

javascript - JavaScript用の10進数学ライブラリはありますか?

JavaScriptで10進数ベースの数学、場合によっては任意精度を実行するための成熟したライブラリはありますか?

編集:浮動小数点関連の問題と、バイナリ浮動小数点が不適切な場合に使用する代替案に関するリファレンスページのこの情報が必要です:http://floating-point-gui.de/

0 投票する
2 に答える
6331 参照

java - JavaへのJava 1.4に移行するときのBigDecimalの問題を避ける1.5+

私は最近のJava 6環境へのJava 1.4のアプリケーションを移行しました。残念ながら、私は問題が発生しBigDecimal、Oracleデータベースに格納。私が保存しようとすると、要約すると"7.65E+7"BigDecimal値を(76,500,000.00実際には、データベース内)の値をOracleの店を7,650,000.00。この不具合はのrewrittingによるものであるBigDecimal(参照のJava 1.5でクラスここ)。

私のコードでは、は次の種類のコードを使用してBigDecimal作成されました。double

99%以上の場合、すべてが正常に機能します。非常にまれなケースを除いて、上記のバグが発生します。そして、それは非常に迷惑です。

のStringコンストラクターの使用を回避するために前のコードを変更した場合、ユースケースでBigDecimalバグは発生しません。

ただし、このソリューションがの使用を処理する正しい方法であることをどのように確認できますBigDecimalか?

だから私の質問は、私は私の管理しなければならない方法を知っているBigDecimalこの問題を回避するために、値を:

  • コンストラクターを使用せず、new BigDecimal(String)直接new BigDecimal(double)
  • 処理するときにメソッドtoPlainString()の代わりにOracleを使用するように強制しますか(この場合はその方法)?toString()BigDecimal
  • 他の解決策はありますか?

環境情報:

  • Java 1.6.0_14
  • Hibernate 2.1.8(はい、かなり古いバージョンです)
  • Oracle JDBC 9.0.2.0であり、10.2.0.3.0でもテスト済み
  • Oracleデータベース10.2.0.3.0

編集:同じコードを誤ってテストしましたが、OracleJDBCバージョン10.2.0を使用しました。4.0とバグは発生しませんでした!保存された値は確かに76,500,000.00...変更ログに関しては、バグ#4711863に関連している可能性があります。

0 投票する
6 に答える
31400 参照

java - Scala と Java BigDecimal

アプリの Math ベースのモジュールを Java からスクリプト言語に切り替えたいと考えています。これは、mathy Java の読みやすさと機能上の制限によるものです。

たとえば、Javaではこれがあります:

ご覧のとおり、BigDecimal 演算子のオーバーロードがなければ、単純な数式がすぐに複雑になります。

double の場合、これは問題ないように見えますが、精度が必要です。

私はScalaでこれができることを望んでいました:

そして、デフォルトでは小数のような振る舞いをしますが、悲しいことに、Scala はデフォルトで小数計算を使用しません。

次に、Scala で次のようにします。

そして、私はまだ不正確な結果を得ています。

Scala で正しく行っていないことはありますか?

おそらく、Groovy を使用して読みやすさを最大化する必要があります (デフォルトでは小数を使用します)。

0 投票する
2 に答える
1024 参照

java - BigDecimal を使用する場合、Java の代わりとして Groovy を使用しますか?

Java、Groovy、および Scala の評価を完了しました。

私が考慮した要因は次のとおりです。読みやすさ、精度

知りたい要素: パフォーマンス、統合の容易さ

BigDecimal レベルの精度が必要でした。

ここに私の結果があります:

ジャワ

グルーヴィー

スカラ

Java と Scala では静的インポートを使用したことに注意してください。

Java: 長所: Java
短所: 演算子のオーバーロードがない (多くのメソッド)、かろうじて読み取り/コード化可能

Groovy: 長所: デフォルトの BigDecimal は目に見えるタイピングがないことを意味し、すべての演算 (除算を含む) に対する BigDecimal のサポートは驚くほど少ない
短所: 別の言語を学ぶ必要がある

Scala: 長所: BigDecimal の演算子のオーバーロードがあります
短所: 除算による驚くべき動作 (Decimal128 で修正)、別の学習言語

0 投票する
2 に答える
3441 参照

java - Lucene 3.0.1 で BigDecimal 値にインデックスを付ける方法

検索用にインデックスを作成する必要がある BigDecimal 値がいくつかあります。Lucene には NumericField がありますが、setter は long、double、float、int のみです。これを文字列として保存することはできますが、NumericRangeQuery のメリットはありません。

BigDecimals をどのように保存しましたか? 共有するベストプラクティスはありますか?

0 投票する
9 に答える
31491 参照

java - BigDecimal.divide中にスローされたArithmeticException

java.math.BigDecimal10進数で無限精度の演算を実行する必要性に対するAnswer™だと思いました。

次のスニペットについて考えてみます。

私は合格することを期待しassertていますが、実際には実行はそこに到達していません:スローされるone.divide(three)原因です!ArithmeticException

この動作はAPIで明示的に文書化されていることがわかります。

の場合divide、正確な商は無限に長い小数展開を持つ可能性があります。たとえば、1を3で割った値です。商に非終了の小数展開があり、正確な結果を返すように演算が指定されている場合、anArithmeticExceptionがスローされます。それ以外の場合は、他の操作の場合と同様に、除算の正確な結果が返されます。

APIをさらに参照すると、実際には、不正確な除算divideを実行するさまざまなオーバーロードがあることがわかります。

もちろん、今の明らかな質問は「ポイントは何ですか?」です。財務計算など、正確なBigDecimal算術が必要な場合の解決策だと思いました。正確に言えない場合、これはどれほど役立つでしょうか?それは実際に一般的な目的を果たしますか、それとも幸いなことにまったく必要のない非常にニッチなアプリケーションでのみ役立ちますか?dividedivide

これが正しい答えではない場合、財務計算の正確な除算に何を使用できますか(つまり、私は財務専攻を持っていませんが、彼らはまだ除算を使用していますよね???)。

0 投票する
2 に答える
852 参照

jruby - ruby 環境での java.bigDecimal 除算

Javaクラスを含むRubyの正しいスクリプト

スクリプト中に、2 つの java.bigDecimal を除算する必要があります

この IDE にはインテリセンスがないため、構文が正しいかどうかわかりません。実行時エラーは次のとおりです。

初期化されていない定数::HALF_EVEN

  1. ruby スクリプト内の Java オブジェクトを正しい方法で結合する必要がありますか?
  2. ruby envで2つのjava.bigDecimalオブジェクトを分割するにはどうすればよいですか?
0 投票する
2 に答える
1622 参照

ruby - BigDecimal が解析に失敗したかどうかを知るにはどうすればよいですか?

csv からデータをインポートしています。いくつかの値を BigDecimal にキャストし、解析できない場合はエラーを発生させる必要があります。

テストから、BigDecimal("invalid number") は 0 の BigDecimal を返します。

Float("invalid number") は動作が異なり、例外がスローされます...

私の現在の解決策は次のとおりです。

私は何かを完全に見逃していますか?

0 投票する
2 に答える
8397 参照

database - JAXB、BigDecimal、または double?

私はさまざまな Web サービスに取り組んでおり、常に WSDL First を使用しています。

JAXB は、次のようなタイプを生成します。

Java バインディング タイプBigDecimal(JAXB 仕様で言及されているとおり)。

double次に、型の値(データベースに格納され、休止状態を介して double 型にマップされる) を使用して簡単な算術演算を行うと、問題が発生します。

正しい方法は何ですか?

  1. すべての値を double に変換します (JAXB バインディング からBigDecimaldouble)
  2. へのマッピングdoubleを休止状態にするBigdecimal

すべての算術演算を 1 つのオブジェクト タイプで実行します。