タグ付けされた質問 「bigdecimal」

BigDecimalは、任意の精度で10進数を表すJavaの数値オブジェクトタイプです。


6
Double vs. BigDecimal?
いくつかの浮動小数点変数を計算する必要があり、より正確になるため、BigDecimal代わりに使用することを同僚に勧めていますdouble。しかし、私はそれが何であり、どのようにしてそれを最大限に活用するのか知りたいBigDecimalですか?


1
BigDecimalを*常に*に丸めると、小数点以下2桁になります
BigDecimal値を小数点以下2桁に切り上げようとしています。 私は使っています BigDecimal rounded = value.round(new MathContext(2, RoundingMode.CEILING)); logger.trace("rounded {} to {}", value, rounded); しかし、それは私が一貫して望むことをしません: rounded 0.819 to 0.82 rounded 1.092 to 1.1 rounded 1.365 to 1.4 // should be 1.37 rounded 2.730 to 2.8 // should be 2.74 rounded 0.819 to 0.82 有効数字は気にせず、小数点以下2桁にしたいだけです。BigDecimalでこれを行うにはどうすればよいですか?または、これにより適した別のクラス/ライブラリはありますか?

5
DecimalFormatの小数点記号をコンマからドット/ポイントに変更する方法は?
BigDecimal値を見やすく読みやすい文字列に変換する、この少しクレイジーなメソッドがあります。 private String formatBigDecimal(BigDecimal bd){ DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(3); df.setMaximumFractionDigits(3); df.setMinimumIntegerDigits(1); df.setMaximumIntegerDigits(3); df.setGroupingSize(20); return df.format(bd); } ただし、これは、","すべての値を次のように出力する、いわゆるグループ化区切り文字も生成します。 xxx,xxx 区切り文字は、カンマではなくドットまたはポイントにする必要があります。誰かがこの小さな偉業を達成する方法の手がかりを持っていますか? 私はこれを読み、特にこれを今は死ぬまで読んだことがありますが、これを成し遂げる方法を見つけることができません。私はこれに間違った方法でアプローチしていますか?これを行うよりエレガントな方法はありますか?おそらく、カンマはヨーロッパの基準で完璧であるため、さまざまな市内番号表現を考慮したソリューションでさえあるかもしれません。


5
ストリームを使用してBigDecimalを合計する
LinkedList一緒に追加したいBigDecimals(この例では)のコレクションがあります。これにストリームを使用することは可能ですか? Streamクラスにいくつかのメソッドがあることに気づきました Stream::mapToInt Stream::mapToDouble Stream::mapToLong それぞれに便利なsum()方法があります。しかし、私たちが知っているようにfloat、double算術はほとんど常に悪い考えです。 それでは、BigDecimalsを合計する便利な方法はありますか? これは私がこれまでに持っているコードです。 public static void main(String[] args) { LinkedList<BigDecimal> values = new LinkedList<>(); values.add(BigDecimal.valueOf(.1)); values.add(BigDecimal.valueOf(1.1)); values.add(BigDecimal.valueOf(2.1)); values.add(BigDecimal.valueOf(.1)); // Classical Java approach BigDecimal sum = BigDecimal.ZERO; for(BigDecimal value : values) { System.out.println(value); sum = sum.add(value); } System.out.println("Sum = " + sum); // Java 8 approach …

4
BigDecimal equals()とcompareTo()
簡単なテストクラスを考えてみましょう: import java.math.BigDecimal; /** * @author The Elite Gentleman * */ public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal x = new BigDecimal("1"); BigDecimal y = new BigDecimal("1.00"); System.out.println(x.equals(y)); System.out.println(x.compareTo(y) == 0 ? "true": "false"); } } …

11
BigDecimalの追加
BigDecimalタイプで表現されたいくつかの通貨の値でいくつかの単純な合計を実行したいと思います。 BigDecimal test = new BigDecimal(0); System.out.println(test); test.add(new BigDecimal(30)); System.out.println(test); test.add(new BigDecimal(45)); System.out.println(test); 明らかに、私はBigDecimal算術をよく理解していません。背後にある出力を参照してください。 Test 0 0 0 誰かが私を助けてくれますか?
155 java  bigdecimal 

2
BigDecimal setScaleおよびround
この2つの呼び出しの違いは何ですか?(何かありますか?) // 1. new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP)); // 2. new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);
140 java  bigdecimal 

8
BigDecimalを整数に変換する
BigDecimalを返すHibernateメソッドがあります。その番号を渡す必要がある別のAPIメソッドがありますが、パラメーターとして整数を受け入れます。両方のメソッドの戻り値の型または変数の型を変更できません。 次に、BigDecimalをIntegerに変換して2番目のメソッドに渡す方法を教えてください。 これから抜け出す方法はありますか?


9
安全な文字列からBigDecimalへの変換
文字列からいくつかのBigDecimal値を読み取ろうとしています。たとえば、「1,000,000,000.999999999999999」という文字列があり、BigDecimalを取得したいとします。それを行う方法は何ですか? まず第一に、文字列の置換(コンマの置き換えなど)を使用するソリューションは好きではありません。私にはその仕事をするためのきちんとしたフォーマッターがいるはずだと思います。 私はDecimalFormatterクラスを見つけましたが、それは2倍で動作するため、膨大な精度が失われます。 それで、どうすればそれを行うことができますか?
120 java  parsing  bigdecimal 

21
秒の値を時分秒に変換しますか?
秒の値(BigDecimal変数内)を「1時間22分33秒」などのeditTextの文字列に変換しようとしています。 私はこれを試しました: String sequenceCaptureTime = ""; BigDecimal roundThreeCalc = new BigDecimal("0"); BigDecimal hours = new BigDecimal("0"); BigDecimal myremainder = new BigDecimal("0"); BigDecimal minutes = new BigDecimal("0"); BigDecimal seconds = new BigDecimal("0"); BigDecimal var3600 = new BigDecimal("3600"); BigDecimal var60 = new BigDecimal("60"); (秒単位の値であるroundThreeCalcがあるので、ここで変換しようとします。) hours = (roundThreeCalc.divide(var3600)); myremainder = (roundThreeCalc.remainder(var3600)); minutes = …

6
フォーマットされたBigDecimal値を印刷する方法は?
私が持っているBigDecimalフィールドamountお金を表し、そして私のような形式で、ブラウザでその値を印刷する必要があります$123.00、$15.50、$0.33。 どうやってやるの? (私は自分自身を得ている参照のみのシンプルなソリューションfloatValueからBigDecimal、その後使用してNumberFormat小数部のための2桁の精度を作るために)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.