浮点数加法的结合性问题?
9000000000.0f + 1.0f - 9000000000.0f != 1.0f
■网友
C/C++基本法并不保证浮点数加法运算满足结合律或者是交换律。浮点数的运算误差控制应该交由程序编写者通过组织运算语句完成,编译器不应该随便进行处理,以免引入意想不到的误差。比如 x = -1e100 + 1e100 + 1 本来会得到1,如果按t = 1e100 + 1; x = -1e100 + t算结果就会变成0。事实上浮点数运算不要说结合性,就连if(a + b == a + b)都不能随便优化成if(1)
■网友
没理由认为编译器会这样优化,语义都不一样。而且,与浮点不浮点无关
推荐阅读
- 贝聊是一个啥样的产品
- 专家:提升中国特色心脏病防治水平应中西医结合、内外科联合
- 怎样设计一位二进制带进位加法的图灵机
- 小儿|优势互补!产康与小儿推拿的完美结合!
- 和VR结合得最好的手机是哪个品牌
- 功夫汽车|汽车和艺术的结合,会产生怎样的“钜浪”?广汽传祺告诉你答案
- 共享单车和共享汽车有结合点吗
- 趣头条|【爱车大征集】智能舒适的轿跑SUV,超强的动力结合更加的年轻化
- 医学在未来会和互联网紧密结合吗有哪些方向丁香园又会向哪些方向发展
- 云计算,物联网和工业4.0能否真正的结合,我们还有多远的路要走
