2

番号を持っています

double num = 1.234567;

そして、私は小数点以下2桁だけを保持しようとしています

num = (int)((num * 100) + 0.5) / 100.0;

しかし、実際に取得した数値は 1.230000000001 です。0000000001 の部分を取り除くにはどうすればよいですか?

4

4 に答える 4

2

10進基数に切り替えない限り、できません。ダブルスとフロートには小数点以下の桁数がなく、2進数の桁数があるため、値の表現が合同である場合、つまり2の負の累乗の場合を除いて、特定の小数点以下の桁数に丸めたり切り捨てたりすることはできません。

したがってDecimalFormat、結果を表示する場合、または結果を使用BigDecimalして計算を継続する場合は、を使用する必要があります。

値を浮動小数点に戻すことで終了するソリューションは正しくありません。

于 2013-03-03T03:49:17.623 に答える
2

DecimalFormatを試してください:

DecimalFormat twoDp= new DecimalFormat("#.##");
Double.valueOf(twoDp.format(num));
于 2013-03-03T03:14:49.280 に答える
1
String result = String.format("%.2f", num);
于 2013-03-03T04:02:16.237 に答える
0

これを試してください..これで解決するはずです

       Double num = //value
   num = //arithmetic


   String temp =num.toString().split("\\.")[0];
       int precision=temp.length();
       BigDecimal b =new BigDecimal(num,new MathContext(precision+2));
   System.out.println(b.doubleValue());
于 2013-03-03T03:41:07.607 に答える