我试图使用DecimalFormat
来格式化双数,只打印2位小数的数字(如果它有小数部分),否则我想按原样打印数字。当数字很小时,下面的代码可以正常工作,但数字很大,但它不能按预期工作。使用DecimalFormat格式化大的双数
DecimalFormat df = new DecimalFormat("#.##"); //have tried just # too
double d1 = 56789d;
System.out.println(df.format(d1)); //works fine - prints 56789
double d2 = 1234567879123456789d;
System.out.println(df.format(d2)); // does not work
第二输出1234567879123456770
,而我想1234567879123456789
。对于带小数部分的双精度值,我只想保留两位小数点。
有什么问题的建议吗?
我怀疑你是'double''s(im)precision的受害者... – fge