一直在学习 发表于 2021-3-7 19:08:25

关于float型的输出

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

巴巴鲁 发表于 2021-3-7 20:21:10

有这个有为什么的想法很好
这个是当时设计时规定这样,计算机肯定是表示一个相对来说精确的数,要不系统自动给你四舍五入,但你不想让这个数四舍五入呢?现实编程中很少遇到要四舍五入的
你想一下,你想计算3.56乘以某个数,如果你写float num = 3.56;系统自动给你四舍五入怎么办,是不是有点不符合现实中大部分情况

一直在学习 发表于 2021-3-8 22:16:49

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

没明白您说的意思{:10_266:}。我不明白在输出的时候,应该是6位小数,为什么float和double表现的不一样??

巴巴鲁 发表于 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
页: [1]
查看完整版本: 关于float型的输出