問題タブ [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 投票する
2 に答える
383 参照

double - BigDecimalについて

ヘッダーとトレーラー レコードを除く各詳細レコードに金額フィールドと数量フィールドが存在する csv ファイルがあります。トレーラ レコードには、詳細レコードの金額フィールドを乗じた数量の合計である合計料金値があります。トレーラーの合計料金の値が、金額フィールドと数量フィールドの計算値と等しいかどうかを確認する必要があります。これらすべての計算に double データ型を使用しています。私が閲覧したとき、以下のWebリンクから、小数点との比較中に二重データ型を使用すると問題が発生する可能性があることを理解できます。BigDecimal を使用することを提案しています

http://epramono.blogspot.com/2005/01/double-vs-bigdecimal.html

double データ型を使用すると問題が発生しますか? BigDecimal を使用して計算を行うにはどうすればよいですか。また、csvファイルの小数点以下の桁数がわかりません。また、金額には正または負の値を指定できます。

csvファイルで

H,ABC..... "D",....,"1","12.23" "D",.....,"3","-13.334" "D",.... ..、"2"、"12" T、csd、123、12.345

------------------------------ 検証中、私は以下のコードを持っています ------------ --------

-------------------------------------- CSV ファイルの読み取り中に、以下のコードが表示されます

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

ruby - RubyでBigDecimalto_sのデフォルトをオーバーライドする

データベーステーブルからデータを取得すると、配列が作成されます。一部のフィールドはdecimal&moneyフィールドとして定義され、配列内ではBigDecimalとして表されます。

これらの配列値を使用してCSVファイルにデータを入力しますが、問題は、すべてのBigDecimal値がデフォルトでScientific形式(BigDecimal to_sメソッドのデフォルトの動作)で表されることです。to_s('F')を使用して値を表示できますが、デフォルトをオーバーライドするにはどうすればよいですか?

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

java - ビッグデシマルについて

ヘッダーとトレーラーのレコードを除く各詳細レコードに金額と数量のフィールドが存在するcsvファイルがあります。トレーラーレコードには、詳細レコードの金額フィールドを掛けた数量の合計である合計請求額があります。トレーラーの合計料金値が、計算された金額フィールドと数量フィールドの値と等しいかどうかを確認する必要があります。これらすべての計算にdoubleデータ型を使用しています

csvファイルの金額フィールドには、「10.12」、「10」、「10.0」、「10.456」、「10.4555」、「-10.12」と表示されます。また、金額は正または負の値を持つことができます。

csvファイル

H、ABC....。

"D"、....、 "1"、 "12.23"

"D"、.....、 "3"、 "-13.334"

"D"、......、 "2"、 "12"

T、csd、123,12.345

------------------------------検証中、私は以下のコードを持っています------------ --------

----------------------- CSVファイルを読んでいる間、私は以下のコードを持っています

変数tmpChargeQuan、tmpChargeAmt、calChargeCountをdoubleとして宣言しました

Webを検索したとき、doubleは財務計算に問題を引き起こす可能性があることがわかったので、BIGDECIMALを使用する必要があります。しかし、このシナリオが私の計算に当てはまるのだろうかと思います。私の場合、金額の値は小数点以下5桁または6桁まで可能です。 "この計算にdoubleデータ型を使用できますか?検証に使用しています。doubleを使用した乗算で上記のコードを使用すると、問題が発生しますか?

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

java - BigDecimalについて

このdouble変数doubletest=58.15に対して以下のjavaprintコマンドを実行します。System.out.println(test);を実行すると およびSystem.out.println(new Double(test).toString()); 58.15として印刷されます。

System.out.println(new BigDecimal(test))を実行すると、以下の値が得られます58.14999999999999857891452847979962825775146484375

「テスト」の二重変数値が58.1499999として内部に格納されていることを理解できます。しかし、以下の2つのSystem.out.printlnを実行すると、58.1499999ではなく58.15として出力が取得されます。

System.out.println(test);

System.out.println(new Double(test).toString());

上記の2つについては、出力を58.15として出力します。

上記のSystem.out.printlnステートメントは、値58.1499999を丸めて、58.15として出力していますか?

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

java - Swing GUI で BigDecimal を使用するには?

Java SE アプリケーションで製品価格を表すために BigDecimal を使用しています。

ユーザーが小数点以下 2 桁のみの数値を入力し、それを BigDecimal 変数/オブジェクトのプロパティにバインドできるようにするには、どのスイング コンポーネントを使用する必要がありますか。(ユーザーのタイプとしてそれを確認します)?

JTextField、JFormattedTextField、NumberFormatter、MaskFormatter で遊んでいますが、解決できません。

それを行うためのこれらのコンポーネントの組み合わせと構成はありますか? または、MaskFormatter、JTextField などを拡張する必要がありますか?

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

java - Java BigDecimal メモリ使用量?

によって消費されるメモリ量を見積もるためのガイドラインはありBigDecimalますか?

メモリ使用量を推定するためのこれらのガイドラインに似たものを探しています。String

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

java - 独自の Swing コンポーネントを作成する際のアドバイスを歓迎します

最近、BigDecimal 変数にバインドするのに最適な Swing コンポーネントはどれかを尋ねました (特定の編集プロパティを使用)。標準の Swing コンポーネントのどれも私に完全に適していないことがわかりました。また、私が見つけたサードパーティの Swing コンポーネント ライブラリもそうではありませんでした。そこで、独自の Swing コンポーネントを作成することにしました。

コンポーネントの説明:

JTextFieldまたはJFormattedTextFieldを拡張したいので、新しいコンポーネントをBigDecimal変数に簡単にバインドできます。

コンポーネントには、カスタマイズ可能なスケール長さのプロパティがあります。

行動:

コンポーネントが描画されると、その右側に小数点とスケール桁のスペースのみが表示されます。

コンポーネントがフォーカスを受け取ると、キャレットは小数点の左に配置する必要があります。ユーザーが数字を入力すると (その他の文字は無視されます)、キャレットの左側に数字が表示されます。長さ-スケールの数字のみが受け入れられ、入力された他の数字は整数部分がいっぱいになるため無視されます。ユーザーが小数点を入力するたびに、キャレットは小数点の右側に移動します。入力された次の数値は小数部に表示されます。スケール番号のみが考慮され、入力された他の数値は小数部がいっぱいであるため無視されます。さらに、ユーザーが小数点以下の数字を入力すると、桁区切り記号が表示されます。

また、コンポーネントをJTableのセル エディタとして使用できるようにしたいと考えています(2 回コーディングする必要はありません)。

コンポーネントで getValue() メソッドを呼び出すと、入力した数値を表す BigDecimal が生成されます。


独自の Swing コンポーネントを作成したことはありません。標準品はほとんど使っていません。したがって、説明されているコンポーネントの作成に関する優れたチュートリアル/情報/ヒントをいただければ幸いです。これは私がこれまでに持っている唯一のものです。

前もって感謝します。

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

java - BigDecimal、除算、MathContext-非常に奇妙な動作

CentOs 5.4、OpenJDKランタイム環境(ビルド1.6.0-b09)

バグ ?

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

ruby-on-rails - BigDecimalto_sがto_fと一致しません

BigDecimalクラスは壊れていますか?次のようなことは絶対に起こらないようです。a.to_f!=a.to_s.to_fに注意してください。

a.class => BigDecimal

a.to_f => 18658.1072928

a.to_s => "10865.81072928"

b.class => BigDecimal

b.to_f => 10000.0

b.to_s => "10000.0"

(a --b).to_f => 865.81072928

a.to_f-b.to_f => 8658.1072928

何がうまくいかないかについてのアイデアはありますか?サーバーではruby1.8.7p72を実行し、ローカルマシンでは1.8.7p173を実行しています。

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

c++ - 最高の(ポータブルな)クロスプラットフォームの任意精度の数学ライブラリは何ですか?

CまたはC++で適切な任意精度の数学ライブラリを探しています。アドバイスや提案をお願いします。

主な要件:

  1. 任意の大きさの整数を処理する必要があります。私の主な関心は整数です。恣意的に大きいという言葉が何を意味するのかわからない場合は、100000のようなものを想像してみてください。(100000の階乗)。

  2. ライブラリの初期化またはオブジェクトの作成中に精度を指定する必要はありません。精度は、システムの利用可能なリソースによってのみ制約される必要があります。

  3. プラットフォームの能力をフルに活用し、「小さな」数をネイティブに処理する必要があります。つまり、64ビットプラットフォームでは、(2 ^ 33 + 2 ^ 32)の計算には使用可能な64ビットCPU命令を使用する必要があります。ライブラリは、同じプラットフォームで(2 ^ 66 + 2 ^ 65)を使用する場合と同じ方法でこれを計算するべきではありません。

  4. 加算( )、減算()、乗算()、整数除算()、剰余()、累乗()、増分()、減分()、GCD、階乗、およびその他の一般的な整数算術計算を効率的に処理する必要があります。整数の結果を生成しない平方根や対数などの関数を処理する機能はプラスです。記号計算を処理する機能はさらに優れています。+-*/%**++--

これが私がこれまでに見つけたものです:

  1. JavaBigIntegerおよびBigDecimalクラス:私はこれまでこれらを使用してきました。ソースコードを読みましたが、その下の計算がわかりません。それは私が学んだことのない理論やアルゴリズムに基づいているのかもしれません。

  2. 組み込み整数型またはbcPythonRubyHaskellLispErlangOCamlPHP、その他の言語のコアライブラリ:これらのいくつかを使用しましたが、どのライブラリを使用しているかわかりません。彼らが使用している実装の種類。

私がすでに知っていること:

  1. char10進数字と10進文字列に使用char*し、-loopを使用して数字の計算を行いますfor

  2. int(または、、long intまたはlong long)を基本的な「単位」として使用し、そのタイプの配列を任意の長整数として使用し、for-loopを使用して要素の計算を行います。

  3. 整数型を使用して、10進数(または数桁)をBCD(2進化10進数)として格納します。

  4. ブースの乗算アルゴリズム

私が知らないこと:

  1. 単純な方法を使用せずに、上記のバイナリ配列を10進数で印刷します。単純な方法の例:(1)ビットを最低から最高に追加します:1、2、4、8、16、32、…(2)char*上記の-文字列を使用して中間の小数の結果を格納します)。

私が感謝すること:

  1. GMPMPFRdecNumber(またはあなたの意見で良い他のライブラリ)の良い比較。

  2. 私が読むべき本や記事に関する良い提案。たとえば、ナイーブでない2進化10進変換アルゴリズムがどのように機能するかを図で示したものが適切です。DouglasW.Jonesによる記事「<strong>制限付き精度での2進数から10進数への変換」は良い記事の例です。

  3. 一般的なヘルプ。

(または、、または)を使用するとこの問題を簡単に解決できると思われる場合は、この質問に答えないでください。そう思うと、問題の問題を理解できません。doublelong doublelong long double