比如说我有Double值1.23456789123456
。我希望能够将此数字乘以10的各种幂,并将输出显示为
123.456789123456
12345.6789123456
0.0123456789123456
0.000123456789123456
etc
有没有办法在Java中执行此操作而不必使用if ... then语句来处理不同10的幂所需的更改小数精度?
答案 0 :(得分:1)
如果您不需要将该数字作为实际浮点值,请尝试将该数字表示为String
而不是小数点(例如"123456789123456"
)。然后使用String.substring()
方法,您可以在任何地方打印小数点,包括前导零等。我不知道您可以完全避免使用任何if
语句,但逻辑应该是相当简单。
例如,这会在三位有效数字后打印小数:
String n = "123456789123456";
System.out.print(n.substring(0, 3));
System.out.print('.');
System.out.print(n.substring(3));
答案 1 :(得分: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
答案 2 :(得分:0)
查看DecimalFormat课程