在Java中打印double,不包括无效的零

Iva*_*nov 4 java precision formatting

我需要在小数点后打印四舍五入到可变位数的双精度数,这样就不会打印出无效的零.例如,我希望数字123和123.4都按原样打印 - 第一个没有小数点,第二个没有小数点.如果小数点后有多位有效数字,则该数字应截断为六位数.

我描述的是boost :: locale :: format的默认行为,如果你打印数字boost::locale::format("{1,number}") % double_value.我需要的是在Java中做同样的事情,最好使用String.format.我试过%f%g,但他们两人打印至少六位数字.

我想要格式化的所有数字都在[0.1,30000]范围内,所以转向科学形式不应该是一种痛苦.

Iva*_*nov 5

使用的DecimalFormat作为解释在这里.

DecimalFormat df = new DecimalFormat("#0.######");
df.format(0.912385);
Run Code Online (Sandbox Code Playgroud)