作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如果有符号/无符号整数隐式转换为 float / double ,C++ 如何舍入?
喜欢:
int myInt = SomeNumberWeCantExpressWithAFloat;
float myFloat = myInt;
我的大学脚本如下所述:结果值是最接近原始值的可表示值,其中以实现定义的方式打破了联系。
请解释“最接近的可表示值” 是如何计算的,以及“以实现定义的方式打破关系的地方” 应该是什么意思。
编辑:
由于我大部分时间都在使用 GCC,请提供有关 GCC 默认使用的浮点表示的更多信息(如果有的话)。
最佳答案
单精度 float 有 24 位尾数。在 32 位 int
表示值高于 224 和低于 -(224) 的系统上需要舍入。
值 224+1 = 16777217 是第一个不能用 IEEE binary32 格式准确表示的 int
。有两个 float
表示可用 - 16777216,它比精确值低 1,而 16777218,它比精确值高,也高 1。因此,我们有一个平局,这意味着 C++ 是允许的选择这两种表示之一。
关于c++ - C++ 如何将 int 舍入为 float/double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193484/
我是一名优秀的程序员,十分优秀!