gpt4 book ai didi

c++ - 缩小从 double 到 float 的转换 : is overflow behaviour guaranteed?

转载 作者:可可西里 更新时间:2023-11-01 15:52:07 27 4
gpt4 key购买 nike

如果我试试这个

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

或者实际上,尝试将任何大于 float max 的值转换为 float,我能保证最终得到无穷大吗?

它适用于 GCC,但它是标准吗?

最佳答案

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

这保证设置 f如果您的编译平台提供用于浮点计算的 IEEE 754 算法(通常会提供),则为无穷大。

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

没有。在默认的 IEEE 754 舍入到最近模式下,一些 double高于最大有限值 float (即 FLT_MAX )转换为 FLT_MAX .确切的限制是 FLT_MAX 之间的中间数字。 (0x1.fffffep127 在 C99 十六进制表示中)和下一个 float如果单精度格式的指数具有更大的范围,则可以表示的数字 0x2.0p127 .因此,限制是 0x1.ffffffp127或十进制约为 3.4028235677973366e+38。

关于c++ - 缩小从 double 到 float 的转换 : is overflow behaviour guaranteed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com