黑马程序员技术交流社区
标题:
很奇葩的答案,哪个大神能帮忙解解
[打印本页]
作者:
2014571245
时间:
2014-4-24 22:00
标题:
很奇葩的答案,哪个大神能帮忙解解
本帖最后由 2014571245 于 2014-4-27 10:51 编辑
#include <stdio.h>
int main()
{
float a = 123.456;
printf("%f",a);
return 0;
}
复制代码
为什么结果是123.456001 不理解
作者:
z82454642
时间:
2014-4-24 22:05
float单精度浮点型,6位小数,第7位以后随机,如果大于5第6位加1
作者:
blz01003hm
时间:
2014-4-24 22:10
是不是精度的损失
#include <stdio.h>
int main()
{
double a = 123.456;//改为 double a=123.456就没有1了
printf("%f",a);
return 0;
}
作者:
桑托尔
时间:
2014-4-25 08:00
这是由于float的存储范围,导致数据遗失的情况
虽然都是小数,但是float的精度要小于double。float占得内存为4,而double为8。
所以楼主如果希望建一个变量,来存储精度比较高的小数的话,建议还是用double为佳。
作者:
gaoxinglei123
时间:
2014-4-25 08:22
嗯。应该是精度的丢失。 有个例子 就是比较浮点数的相等。其实是比较两个浮点数的差值小于某个 阀值,例如1e-6
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2