String.format("%f", h) 不设定小数位数格式化后显示小数位数为6位

bjqy4255 2012-02-27 04:41:11
double h = 45612645464645642d;
String strD = String.format("%f", h);
System.out.println("strD==="+strD);

(1)如果h没有小数的话,为什么他默认的是六位小数;结果是:45612645464645642.000000



那位大侠给我解释下;
...全文
959 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
游一游走一走 2012-02-27
  • 打赏
  • 举报
回复
请参考java api "f"的说明,有句"如果没有指定精度,则默认值为 6".....
MiceRice 2012-02-27
  • 打赏
  • 举报
回复
你按照缺省的float去格式化它,给你6位小数很正常啊,要不你就指定小数位数好了。
Acesidonu 2012-02-27
  • 打赏
  • 举报
回复
就是这么规定的
Geminit 2012-02-27
  • 打赏
  • 举报
回复
以为你的 h 是 double类型的,在double转换为String的过程中,为了避免精度受损,所以默认保留了6位小数位,即使没有小数位,则也以0填充,这是java默认的。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧