黑马程序员技术交流社区

标题: float 变量与“零值”进行比较 [打印本页]

作者: qhw_fight    时间: 2016-4-2 22:46
标题: float 变量与“零值”进行比较
float 变量与“零值”进行比较的 if 语句怎么写?
float fTestVal = 0.0;
A), if(fTestVal == 0.0); if(fTestVal != 0.0);
B), if((fTestVal >= -EPSINON) && (fTestVal <= EPSINON)); //EPSINON 为定义好的 精度。
哪一组或是那些组正确呢?我们来分析分析:
float 和 double 类型的数据都是有精度限制的,这样直接拿来与 0.0 比,能正确吗?明显 不能,看例子: 的值四舍五入精确到小数点后10位为:3.1415926536,你拿它减去 0.00000000001 然后再四舍五入得到的结果是多少?你能说前后两个值一样吗?
EPSINON 为定义好的精度,如果一个数落在[0.0-EPSINON,0.0+EPSINON] 这个闭区间 内,我们认为在某个精度内它的值与零值相等;否则不相等。扩展一下,把 0.0 替换为你想 比较的任何一个浮点数,那我们就可以比较任意两个浮点数的大小了,当然是在某个精度 内。
  同样的也不要在很大的浮点数和很小的浮点数之间进行运算,比如:
10000000000.00 + 0.00000000001
这样计算后的结果可能会让你大吃一惊
作者: 最爱舒儿    时间: 2016-4-3 00:20
一头雾水啊                        
作者: qq6937523    时间: 2016-4-3 07:28
一脸的懵逼 啊
作者: x_starry    时间: 2016-4-3 19:16
感觉写的有些乱啊




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