BigDecimal値を特定の文字数以下の文字列に変換し、必要に応じて科学的記数法に切り替えたいと思います。これどうやってするの?
formatDecimal(BigDecimal number, int maxChars)
つまり、次のテストに合格する関数を作成するにはどうすればよいですか。
final int maxChars = 6;
assertEquals(
"0.3333",
formatDecimal(new BigDecimal(0.3333333333333), maxChars)
);
assertEquals(
"1.6E+6",
formatDecimal(new BigDecimal(1555555), maxChars)
);
assertEquals(
"1.6E-5",
formatDecimal(new BigDecimal(0.0000155), maxChars)
);
assertEquals(
"1234.6",
formatDecimal(new BigDecimal(1234.56789), maxChars)
);
assertEquals(
"123",
formatDecimal(new BigDecimal(123), maxChars)
);
assertEquals(
"0",
formatDecimal(new BigDecimal(0), maxChars)
);
私のアプリケーションでmaxChars
は、実際にはパラメータである必要はありません。コンパイル時に(18に)修正されるため、DecimalFormat("#.####")
科学的記数法への切り替えを正しく管理できる限り、たとえばを使用したソリューションが機能する可能性があります。