java - java中的逻辑十进制格式

标签 java formatting decimal-point

当谈到在java中格式化小数时,我知道一种方法

NumberFormat formatter = new DecimalFormat("#0.00");  

但是如果您可能有诸如此类的值,则这不起作用

0.0000054654654 or similar

在这种情况下你会得到

0.00

虽然从逻辑上讲,打印更有意义

0.0000054 (or maybe 0.0000055)

我想知道是否已经有解决方案?或者我必须实现自定义格式化程序?

可能存在的示例

1.1 -> 1.100 0.00000011111 -> 0.000000111

你可以看到,我们不需要硬编码我们想要的小数点后有多少位数字,而是需要告诉我们在第一个数字之后想要多少位数字......(大致)

最佳答案

NumberFormat formatter = new DecimalFormat("#0.00");  

0 的数量指定精度。 如果您希望将 0.0000054654654 格式化为 0.0000055,请使用: NumberFormat 格式化程序 = new DecimalFormat("#0.000000");

如果预先未知所需的精度,可以使用以下方法:

public static void main(String[] args) {
    double a = 0.0000054654654;
    BigDecimal bd = new BigDecimal(a);
    String answer = String.format("%."+3+"G", bd);
    System.out.println(answer);
} 

关于java - java中的逻辑十进制格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632821/

相关文章:

objective-c - 在格式化 float 以供显示时限制小数位数和总位数

java - 使用 Maven 将测试项目和核心项目分开

java - 如何使用正则表达式从字符串中解析数字

java - 在 Java 类 DecimalFormat 中,小数点左侧的主题标签有什么作用?

java - 将 BigDecimal 格式化为最多 2 个十进制数字的字符串,在小数部分删除 0

formatting - 有没有办法漂亮地格式化或美化 NSIS 脚本源代码?

binding - 使用 Value With Pattern 绑定(bind)时如何格式化浮点小数?

c++ - 将小数存储为单个 float 时的预期错误是什么?

java - 在接口(interface)中声明枚举时出错

java - "Zoom In/out "图像在 Android 中单击按钮?