c – Downcasting double to float:是否有溢出行为保证?

前端之家收集整理的这篇文章主要介绍了c – Downcasting double to float:是否有溢出行为保证?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我尝试这个
float f = (float)numeric_limits<double>::infinity();

或者,试图将任何比float max大的东西投放到浮点数,我保证最终达到无穷大吗?

它在海湾合作委员会工作,但它是一个标准呢?

解决方法

float f = (float)numeric_limits<double>::infinity();

如果您的编译平台为浮点计算提供IEEE 754算法(通常会),则可以将f设置为无穷大.

Or indeed,try to cast anything bigger than float max down to a float,am I guaranteed to end up with infinity?

否.在默认的IEEE 754 round-to-nearest模式中,高于最大有限浮点数(即FLT_MAX)的几个双值将转换为FLT_MAX.精确的限制是FLT_MAX(C99十六进制表示中的0x1.fffffep127)和下一个浮点数之间的数字,如果单精度格式的指数具有较大的范围,则为0x2.0p128.因此,极限为0x1.ffffffp127或小数点的3.4028235677973366e 38.

猜你在找的C&C++相关文章