c++ - C++ 如何将 int 舍入为 float/double?

标签 c++ floating-point type-conversion implicit-conversion

如果有符号/无符号整数隐式转换为 float / double ,C++ 如何舍入?

喜欢:

int myInt = SomeNumberWeCantExpressWithAFloat;
float myFloat = myInt;

我的大学脚本如下:结果值是最接近原始值的可表示值,其中关系以实现定义的方式断开。

请解释如何计算“最近的可表示值”以及“以实现定义的方式打破联系”的含义。

编辑:
由于我大部分时间都在使用 GCC,因此请提供有关 GCC 默认使用的浮点表示形式(如果有)的更多信息。

最佳答案

单精度 float 有 24 位尾数。在 32 位 int 表示值高于 224 且低于 -(224) 的系统上需要舍入。

值 224+1 = 16777217 是第一个无法以 IEEE 二进制 32 格式精确表示的 int。有两种 float 表示形式可用 - 16777216,它比精确值低 1,而 16777218,它比精确值高 1。因此,我们有一个平局,这意味着 C++ 是允许的选择这两种表示之一。

关于c++ - C++ 如何将 int 舍入为 float/double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193484/

相关文章:

如果添加小数点,则 C++ 变量不添加

c++ - 缺少有关 Boost 的详细信息(.lib 文件)

将 2 个字节转换为整数

c - 指针声明中的错误数据类型

c++,指向函数 vector 的指针的STL映射

参数子句中声明符和抽象声明符之间的 C++11 歧义?

floating-point - 逆向工程未知浮点格式

matlab - matlab中32位十六进制到32位浮点(IEEE 754)的转换

c++ - 为什么我的花车坚持保持整数?

arrays - 从元组数组类型转换为命名元组数组类型的替代方法是什么?