请您教我.(初学者)

giantzz 2001-12-02 07:04:53
一、main()
{
float a;
scanf("%g",&a);
printf("%.2g",a);
}
///////////////////
main()
{
float a;
scanf("%g",&a);
printf("%.3e",a);
}
当输入167.2476时,这两个程序为什么分别输出为170和1.67e+02而不是1.7e+02和1.672e+02(运行于TC2.0)
二、main()
{
float a;
scanf("%1.1g",&a);
printf("%.2g",a);
}
输出结果为什么会是1.7e-38(运行于TC2.0)
而在TC3.0中运行却是-6.6e-30
...全文
123 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
giantzz 2001-12-05
  • 打赏
  • 举报
回复
拜托
peng_peng 2001-12-04
  • 打赏
  • 举报
回复
#include<stdio.h>
main()
{
float a;
scanf("%g",&a);
printf("%.2g\n",a);

return 0;
}
当输入167.2476时,输出为1.7e+002


#include<stdio.h>
main()
{
float a;
scanf("%g",&a);
printf("%.3e\n",a);
return 0;
}
当输入167.2476时,printf("%.3e",&a);输出1.673e+002,

我用的是VC6.0,因为没有安装TC,所以没有在TC上试,你可以在VC6.0上试试,
我的QQ:1789712
giantzz 2001-12-04
  • 打赏
  • 举报
回复
帮帮忙
giantzz 2001-12-04
  • 打赏
  • 举报
回复
帮帮忙
peng_peng 2001-12-03
  • 打赏
  • 举报
回复
一、当输入167.2476时,这两个程序为什么分别输出为170和1.67e+02而不是1.7e+02和1.672e+02(运行于TC2.0)
转换符g表示显示有效数字,不是小数,并四舍五入,所以只会输出为170和1.67e+02而不是1.7e+02和1.672e+02
giantzz 2001-12-03
  • 打赏
  • 举报
回复
不是很难,为什么会... ...
giantzz 2001-12-03
  • 打赏
  • 举报
回复
hz129(孤星古雨)本身有错误
giantzz 2001-12-03
  • 打赏
  • 举报
回复
给个正确答案
giantzz 2001-12-03
  • 打赏
  • 举报
回复
错错错错错.
难到还要我... ...
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\对于%g转换说明符来说:

比如小数点前有D位,精度说明符是S:
当 D>S ,则用指数形式输出,小数点前为1位,小数点后为S-1位。
所以,当输入167.2476时,printf("%.2g",a);应该输出1.7e+02,可是怎么会是170。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\当输入167.2476时,printf("%.3e",&a);应该输出1.672e+02,因为要精确到小数点的后3位,
可是怎么会是1.67e+02.


请各位教我
c7654321 2001-12-02
  • 打赏
  • 举报
回复
1:位数问题
2:越界错误
hz129 2001-12-02
  • 打赏
  • 举报
回复
一、.2和.3指的是小数点后2位与3位,小数点前位有多少位都直接输出,不受影响
二、输入时不能指定1.1这样的精度,会出错的,所以输入数并未进入变量,变量的值只是随机数

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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