C语言 浮点型

floatf=1000.23;printf("%f\n",f);为什么是1000.229980啊谢谢... float f = 1000.23;

printf("%f\n",f);

为什么是 1000.229980啊

谢谢
展开
 我来答
sj206327327206
推荐于2017-11-25
知道答主
回答量:25
采纳率:100%
帮助的人:16.3万
展开全部
float是单精度浮点型,即在没有限制的情况下,默认六位小数,此题在定义时,f=1000.23,输出时有输出格式(%f)控制将变量f还原成带六位小数的float型数,由于f只有两位小数,编译器采用近似值的方式还原,若想输出是1000.23则应写为printf(“%.2f/n”,f);
其中(.2f)是控制输出两位小数
来自:求助得到的回答
空雨拂秋
2012-11-28 · TA获得超过147个赞
知道答主
回答量:72
采纳率:0%
帮助的人:42.4万
展开全部
因为定义浮点型%f表示按十进制小数形式输出变量的值,除非特别指定,比如%.2f,那么输出就只有两位小数,否则,则输出六位小数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hamama00
2012-11-28 · 超过34用户采纳过TA的回答
知道答主
回答量:134
采纳率:100%
帮助的人:107万
展开全部
你这是精度问题,浮点数会损失精度,用double 会比上面的好一些
double f=1000.23;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zflovetjy
推荐于2018-03-24
知道答主
回答量:1
采纳率:100%
帮助的人:893
展开全部
因为
%f是保留小数后面六位
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乔岚礼秋灵
2019-04-20 · TA获得超过4128个赞
知道大有可为答主
回答量:3117
采纳率:24%
帮助的人:242万
展开全部
f=(INT)
(f*100+0.5)/100.0先说里边的f*100,就是把f的两位小数转换为整数位,加0.5,转换后的小数位(即第三位小数加0.5),然后强制转化为int型,再除以一百恢复两位小数,假设f为1.536则,乘一百为153.6加0.5为154.1,转换以后为154除以100为1.54假设f为1.534,乘一百为153.4加0.5为153.9,强制转换后卫153,除以100为1.53
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式