c – Downcasting double to float:是否有溢出行为保证?
如果我尝试这个
float f = (float)numeric_limits<double>::infinity(); 或者,试图将任何比float max大的东西投放到浮点数,我保证最终达到无穷大吗? 它在海湾合作委员会工作,但它是一个标准呢? 解决方法
如果您的编译平台为浮点计算提供IEEE 754算法(通常会),则可以将f设置为无穷大.
否.在默认的IEEE 754 round-to-nearest模式中,高于最大有限浮点数(即FLT_MAX)的几个双值将转换为FLT_MAX.精确的限制是FLT_MAX(C99十六进制表示中的0x1.fffffep127)和下一个浮点数之间的数字,如果单精度格式的指数具有较大的范围,则为0x2.0p128.因此,极限为0x1.ffffffp127或小数点的3.4028235677973366e 38. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |