Java中如何使用printf打印极小的double类型数值
Java printf输出极小double数值的解决方案
问题原因
printf中%f格式化符默认仅保留6位小数,你要输出的4.507310875086383E-8实际数值为0.00000004507310875086383,小数点后前6位均为0,因此默认输出显示为0.000000。
实现方案
你可以根据所需的输出格式选择对应格式化符:
- 若要和字符串拼接的科学计数法输出完全一致,使用
%e格式化符,可按需指定精度:// 默认保留6位有效数字的科学计数法 System.out.printf("value is %e%n", value); // 指定精度后完全匹配字符串拼接的输出结果 System.out.printf("value is %.16e%n", value); - 若要系统自动适配输出格式(数值极小/极大时用科学计数法,常规数值用普通小数格式),使用
%g格式化符:System.out.printf("value is %.16g%n", value); - 若不需要科学计数法,要展示完整小数形式,给
%f指定足够的小数位数即可:// 保留8位小数即可显示非0结果 System.out.printf("value is %.8f%n", value); // 保留16位小数可完全体现当前double的精度 System.out.printf("value is %.16f%n", value);
内容的提问来源于stack exchange,提问作者Hanabi
相关产品推荐
相关产品推荐

