でもゼロで小数点以下を保ちます他の人にとってはそれはありません。どうすればこの問題を解決できますか?のJava常に<code>DecimalFormatter</code>を使用して、数字がゼロであっても、その後場合、私は2つの小数点以下を維持しようとしています
答えて
DecimalFormat
でDouble.valueOf
を使用していて、フォーマットされた数値をdoubleに変換しているため、末尾の0は削除されているためです。あなたが値を表示するあるときDecimalFormat
を使用するだけで、この問題を解決するには
。
m_interest
の計算が必要な場合は、通常のdouble
のままにしてください。
次に表示する、使用:
System.out.print(df.format(m_interest));
例:
DecimalFormat df = new DecimalFormat("#.00");
double m_interest = 1000;
System.out.print(df.format(m_interest)); // prints 1000.00
しかし、私は二重として価値を送る必要があります。ここで、df.format()の出力は文字列型です。 どういうわけか、10.0の代わりに10.0の値を二重に送ることができますか?または私は全くできない? –
@ChandraBhanSinghそれは本当に意味をなさない。 doubleは数値です。後続のゼロを持つようにはフォーマットされていません。数値を何らかの形で印刷する必要がある場合は、その前に 'df.format()'を使います。番号を印刷するだけでなく、10進数のままにすることもできます。あなたはどんな状況ですか? –
私のプロジェクトでは、double値が4精度であることを明示的に述べた文書から署名しました。今クライアントは小数点以下4をゼロにしたいと思うように、私は本当にこれを達成する方法が混乱しています。あなたがキャッチーな陳述を私に伝えることができればと感謝します。だから私は彼にこれについて納得させることができます。 JAX-WS Webサービスでこれらの値を送信しています。 –
BigDecimalを代わりに使用してください。これは、求める書式設定手法をサポートしています。
この質問はそれを詳細:How to print formatted BigDecimal values?
ああ、オーバーヘッドはありますか?それは何ですか?あなたがお金を稼いでいるなら、BigDecimalはあなたがそれをやる方法です。 – Rob
申し訳ありませんが、あなたは正しいです。すべての財務計算はBigDecimalで行う必要があります。私は以前のコメントを撤回します。もう一度、申し訳ありません。 1+ –
@Robが指摘しているように、BigDecimalを使用してください。これは、使用可能な書式のためではなく、無限の精度を使用するためです。Doubleは金銭計算のために望ましくない丸めを受けます。 – GreyBeardedGeek
のDecimalFormat とのNumberFormatはうまく動作するはずです。
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class Foo {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#0.00");
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
NumberFormat cf = NumberFormat.getCurrencyInstance();
System.out.printf("0 with df is: %s%n", df.format(0));
System.out.printf("0 with nf is: %s%n", nf.format(0));
System.out.printf("0 with cf is: %s%n", cf.format(0));
System.out.println();
System.out.printf("12345678.3843 with df is: %s%n",
df.format(12345678.3843));
System.out.printf("12345678.3843 with nf is: %s%n",
nf.format(12345678.3843));
System.out.printf("12345678.3843 with cf is: %s%n",
cf.format(12345678.3843));
}
}
これでしょう出力:通貨インスタンスは、より良いを仕事ができる
0 with df is: 0.00
0 with nf is: 0.00
0 with cf is: $0.00
12345678.3843 with df is: 12345678.38
12345678.3843 with nf is: 12,345,678.38
12345678.3843 with cf is: $12,345,678.38
なぜあなただけで恐らくMath.round(値* 100)/ 100.0のですか?
これはまさに彼の問題です。彼は後ろの0を表示する必要があります。丸めればそれらは排除されます。これはまた答えではない、それは質問だから、コメントでなければならない。 –
申し訳ありませんが、私はダブルとは思わない。valueOf()はそれらの0を気にしています。したがって、私はフォーマットの手間をかけるのは大変だと思います。 – pinxue
はい、 'Double.valueOf()'が彼の問題です。それが彼のために解決しようとしていることです。彼の質問をお読みください。 –
m_interest = Double.valueOf(String.format("%.2f", sum));
このコードは疑問に答えるかもしれませんが、他の人を紹介せずに問題を解決し、それを使用する方法を説明する方が良いでしょう。コードのみの回答は長期的には有用ではありません。 –
- 1. 数値がCの小数点以下の数字を持たない場合はfloatにします
- 2. 形式小数点以下2桁 - 後尾ゼロなし
- 3. 文字列ビルダーを使用してjavaに小数点以下2桁まで印字する方法は?
- 4. PDOは浮動小数点数をカンマで小数点以下の文字として返します
- 5. BigDecimal除算の小数点以下の桁数を制限しようとしていますJava
- 6. 小数点以下を小数点以下の桁数に変換します。
- 7. xlwtを使用して、通貨と2つの小数点以下の桁数をExcelに変換する
- 8. すべて小数点以下4桁に設定されている場合、エンティティフレームワークは2小数点以下を切り捨てます
- 9. html数値の入力を常に小数点以下2桁にします。
- 10. "double"を使用して小数点以下2桁の値を出力する
- 11. 浮動小数点数を小数点以下2桁までフォーマットします。
- 12. アクションスクリプトは、小数点以下2桁の数字のみを制限します
- 13. JavaScriptを使用して未使用の小数点以下切り捨て
- 14. 年次給与&小数点以下2桁の小数点以下の桁数を返します。
- 15. n個の小数点以下の桁数を持つ浮動小数点数をcoutにどのように
- 16. Javaが最初に2つの小数点以下2桁を得ます
- 17. Matlabで末尾のゼロを削除し、小数点以下6桁を使用
- 18. リミット2つの小数点以下
- 19. 小数点以下のカンマの前にゼロが付きます
- 20. 小数点以下2〜4小数点以下切り上げ
- 21. 私は以下のコードを使用している場合HTML5
- 22. BigDecimalを*常に小数点以下2桁に丸めます
- 23. すべてのテキストビューで小数点以下の桁数を設定します。
- 24. SQLのELSE場合は、私は、クエリの下に私がメッセージ<strong>何<strong>「tblOrganisation.Name」</strong>がない場合、それは正常に動作し、クエリ以下に見てください</strong>「このRAOなしサブソース」を表示しようとしています持っている
- 25. 私は以下のように2つの移行を持っている
- 26. SQLI合計が、私は以下のタラによって、データベーステーブルの列の合計しようとしていますが、それは働いていない
- 27. 浮動小数点数が同じ有意な小数点以下を持つ
- 28. Decimal値をHours&Minutesに変換します。また、私はASP.Netページ上の2つの小数点以下のテキストボックス持っている別の
- 29. ループカウンタとしてfloat変数を使用するリスクと、非 "=="条件に対して小数点以下の増減を行うリスクはありますか?
- 30. は、私がboost.pythonを使ってPythonにC++関数以下を公開しようとしているboost.python
あなたが機能しなかった例を与えることができますか? – SudoRahul
本当ですか?私は "#0.00"を私の書式文字列に使用しますが、これはうまくいくはずです。あなたが実際に上記のコードを実行しているのではないかと思う。 –
おそらく 'Double.valueOf'を行っているからです。しかし、ちょうど推測です。 –