搜索
查看: 926|回复: 1
打印 上一主题 下一主题

昨天有人问了我一个问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-28 12:44:53 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题如下:
有一个浮点数x,怎样判断它是不是等于0?我说了,用if判断它是否等于0不就得了。他说不对,我问他为什么,然后他撇出一句话,c语言中两个数运算比如一个整型跟一个浮点型数据进行运算,会自动将整型转换为浮点型数据,问题就在这,c语言中规定浮点型数据是按照IEE754标准进行存储的,会导致数值存储不准确,这也就是为什么在for or while循环中为什么要求不要用浮点数控制自增或者自减。他说,好多公司面试的时候通常会问一些这种问题。我听了很是头大,这个IEE754标准谁了解的多一些?那么,这个题应该怎么解才正确?
沙发
发表于 2013-8-28 13:22:23 | 只看该作者
C没有规定浮点数是IEEE754浮点数,只是通常实现成IEEE754浮点数

这在C99下很容易
#include <math.h>
fpclassify(x) == FP_ZERO

非C99可以内联汇编来检测(mingw的头文件里就是这么做的)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表