黑马程序员技术交流社区

标题: 来自公司的C语言的面试题 [打印本页]

作者: xiezhongmin    时间: 2014-12-26 23:57
标题: 来自公司的C语言的面试题
有一个浮点型变量x,如何判断x的值是否为0?
作者: laichunhui    时间: 2014-12-26 23:59
什么题啊
作者: xiezhongmin    时间: 2014-12-27 00:05
没人知道么?
作者: xiezhongmin    时间: 2014-12-27 00:14
是你们自负不削回答,还是真的不知道。  :lol楼主友情提示,自负会是你成为高手的最大阻碍,你可能会漏掉很多知识点!!!
作者: Jeason_1007    时间: 2014-12-27 01:56
这个题目怎么能这么问呢,其他的什么都不知道吗
作者: 15021367785    时间: 2014-12-27 09:29
留个脚印,我以后来看
作者: xiezhongmin    时间: 2014-12-27 09:33
就是个条件 判断题需要知道什么?
作者: shicuf    时间: 2014-12-27 09:34
x > -0.000001 && x < 0.000001
作者: xiezhongmin    时间: 2014-12-27 17:55
shicuf 发表于 2014-12-27 09:34
x > -0.000001 && x < 0.000001

恩,回答正确,一般会写成:|x-0.000001|<=0.000001;
作者: bun    时间: 2014-12-27 21:52
value - (int)value ==0&&(int)value==0  前边表达式判断是否有小数位 后边判断整数位为0,我觉得应该有更好的方法
作者: 15342193033    时间: 2014-12-27 22:12
可以做&运算吗?(与1做与运算),与1做与运算不是可以保留原来的值吗???不太清楚
作者: xiezhongmin    时间: 2014-12-28 00:19
bun 发表于 2014-12-27 21:52
value - (int)value ==0&&(int)value==0  前边表达式判断是否有小数位 后边判断整数位为0,我觉得应该有更好 ...

你没有弄清楚double类型数据的存放问题,先了解清楚,再求证自己的思路是否正确,加油,编程就是要多猜测多证明!
作者: weiwei20    时间: 2014-12-28 01:15
学习了啊,,
作者: bun    时间: 2014-12-29 06:48
xiezhongmin 发表于 2014-12-28 00:19
你没有弄清楚double类型数据的存放问题,先了解清楚,再求证自己的思路是否正确,加油,编程就是要多猜测 ...

IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f ; 11 位偏置指数 e ;以及 1 位符号 s。
这些字段连续存储在两个 32 位字中。
看来是学习了。

作者: miaopf123    时间: 2014-12-29 07:45
受教了!!!!!!
作者: 三生三世    时间: 2014-12-29 08:38
受教了!!!!
作者: z3921445    时间: 2014-12-29 08:42
这个真不会!
作者: BBD2008    时间: 2014-12-29 08:46
总结下:
如果是float类型就直接判断: if (f == 0.0);
如果是double类型就判断:if (fabs(d) < EPSILON) 或是 if (fabs(d) < 0.000001);

作者: 马志华    时间: 2014-12-29 08:51
if(x^0.0==0.0)可以不?
作者: xiezhongmin    时间: 2014-12-29 09:16
bun 发表于 2014-12-29 06:48
IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f ; 11 位偏置指数 e ;以及 1 位符号 s。
这 ...

因为在计算机中,double类型数据也就是说有小数位的数值,是无法准确的存储的,比如:10.23存储的值可能是10.229999999999999......所以判断它是否为0只能判断它的误差接近为0而不是0.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2