鱼C论坛

 找回密码
 立即注册
查看: 2073|回复: 3

关于float型的输出

[复制链接]
发表于 2021-3-7 19:08:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
float b=123.1234567;
double c=123.1234567;
printf("b=%f,%lf\n",b,b);
printf("c=%f,%lf\n",c,c);
为什么float不是保留6位四舍五入呢?
b=123.123459,123.123459
c=123.123457,123.123457
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-7 20:21:10 | 显示全部楼层
有这个有为什么的想法很好
这个是当时设计时规定这样,计算机肯定是表示一个相对来说精确的数,要不系统自动给你四舍五入,但你不想让这个数四舍五入呢?现实编程中很少遇到要四舍五入的
你想一下,你想计算3.56乘以某个数,如果你写float num = 3.56;系统自动给你四舍五入怎么办,是不是有点不符合现实中大部分情况
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-8 22:16:49 | 显示全部楼层
巴巴鲁 发表于 2021-3-7 20:21
有这个有为什么的想法很好
这个是当时设计时规定这样,计算机肯定是表示一个相对来说精确的数,要不系统自 ...

没明白您说的意思。我不明白在输出的时候,应该是6位小数,为什么float和double表现的不一样??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-9 07:56:18 | 显示全部楼层
一直在学习 发表于 2021-3-8 22:16
没明白您说的意思。我不明白在输出的时候,应该是6位小数,为什么float和double表现的不一样? ...

float本身并不精确,保留10位小数打印就能发现
b=123.1234588623,123.1234588623
c=123.1234567000,123.1234567000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 09:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表