2

たとえば、Doubleの値があるとします1.23456789123456。この数値にさまざまな10の累乗を掛けて、出力を次のように表示できるようにしたいと思います。

  123.456789123456
12345.6789123456
    0.0123456789123456
    0.000123456789123456
etc

if ... thenステートメントを使用せずにJavaでこれを行う方法はありますか?10のさまざまな累乗に必要な小数点以下の精度の変化を処理しますか?

4

3 に答える 3

1

これは改善される可能性がありますが、近いです:

public class Test {

    public static void main(final String[] args) {
        System.out.println(format(123.456789123456d));
        System.out.println(format(12345.6789123456d));
        System.out.println(format(0.0123456789123456d));
        System.out.println(format(0.000123456789123456d));
    }

    public static String format(final double d) {
        final int before = 16 - Integer.toString((int) d).length();
        final String format = "%" + (16 + before) + "." + before + "f";
        return String.format(format, d);
    }

出力:

        123.4567891234560
      12345.67891234560
          0.012345678912346
          0.000123456789123
于 2013-02-25T22:22:52.573 に答える
1

数値を実際の浮動小数点値として必要としない場合は、数値をString小数点なしで表現してみてください (例: "123456789123456")。次に、String.substring()メソッドを使用して、必要な場所に小数点を出力したり、先行ゼロを含めたりすることができます。ステートメントの使用を完全に回避できるかどうかはわかりませんifが、ロジックはかなり単純です。

たとえば、これは有効数字 3 桁の後に小数点を出力します。

String n = "123456789123456";
System.out.print(n.substring(0, 3));
System.out.print('.');
System.out.print(n.substring(3));
于 2013-02-25T21:04:02.997 に答える
0

DecimalFormatクラスを確認してください

于 2013-02-25T21:45:55.033 に答える