关于格式化输出时“%f”与“%g”的区别.

Sodino 2009-02-19 10:42:31



%f:格式化一个浮点数。
%g:使代码使用科学记数法。
我在测试下面这段代码时发现如下一个现象,应该如何理解比较容易记忆呢??谢谢。
float i = 3f;
System.out.printf("5Int: %5g ",i);
输出为://科学记数法。(5个0)
5Float: 3.00000

当为:
System.out.printf("5Int: %5f ",i);
输出为://格式化一个浮点数。(6个0)
5Float: 3.000000

一个是5个0,一个是6个0。我只是想请教大家这个区别如何理解比较好记呢?谢谢。。。
丫滴,我都开始想我自己已经钻了牛角尖了!!!
...全文
1917 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MT502 2009-02-20
  • 打赏
  • 举报
回复
jdk的文档解释的很清楚啊
For the floating-point conversions 'e', 'E', and 'f' the precision is the number of digits after the decimal separator. If the conversion is 'g' or 'G', then the precision is the total number of digits in the resulting magnitude after rounding.
用f的话是小数点后5位,用g就是总共5位。
捏造的信仰 2009-02-20
  • 打赏
  • 举报
回复 1
Java 这种格式化输出使用的都是一个叫 Formatter 的类:
http://java.sun.com/javase/6/docs/api/java/util/Formatter.html

关于这些占位符都有解释。
AgileGuest 2009-02-20
  • 打赏
  • 举报
回复
为什么java中这么多有用的知识点楼主不去研究,反而在乎这种莫名其妙的问题呢?
buyaowen 2009-02-20
  • 打赏
  • 举报
回复
不过不管你想不想怎么区分,一研究这个就是钻牛角尖了
buyaowen 2009-02-20
  • 打赏
  • 举报
回复
up
我也不懂,也没注意过
Sodino 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 MT502 的回复:]
再说你的格式字符串也不对,你格式是整形部分

Java codefloat i = 3f;
System.out.printf("5Int: %.6g ",i);
System.out.printf("5Int: %.5f ",i);


这样就都是5个0了
[/Quote]

哦,谢谢呵呵,I 明白了。
MT502 2009-02-20
  • 打赏
  • 举报
回复
再说你的格式字符串也不对,你格式是整形部分
float i = 3f;
System.out.printf("5Int: %.6g ",i);
System.out.printf("5Int: %.5f ",i);

这样就都是5个0了
chxy148 2009-02-20
  • 打赏
  • 举报
回复
同意五楼的说法 %1.4g %1.4f 效果是不是一样呢~~~

62,635

社区成员

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

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