Floating point 为什么;可四舍五入“;从int到float,但是;“可以保存”;从int到double?

Floating point 为什么;可四舍五入“;从int到float,但是;“可以保存”;从int到double?,floating-point,rounding,integer-arithmetic,Floating Point,Rounding,Integer Arithmetic,计算机系统:程序员的观点是: 在int、float和double格式之间转换值时 程序根据需要更改数值和位表示形式 如下所示(假设数据类型int为32位): 从int到float,数字不能溢出,但可以四舍五入 从int或float到double,可以保留精确的数值,,因为double具有更大的范围(即 可表示的值),以及更高的精度(即数字 重要比特数) 为什么从int到float“可以四舍五入”,但从int到double“可以保留” 这两种情况是否应该相同?(我想两者都没有舍入?) 这两种情

计算机系统:程序员的观点是:

在int、float和double格式之间转换值时 程序根据需要更改数值和位表示形式 如下所示(假设数据类型int为32位):

  • 从int到float,数字不能溢出,但可以四舍五入
  • 从int或float到double,可以保留精确的数值,因为double具有更大的范围(即 可表示的值),以及更高的精度(即数字 重要比特数)
为什么从int到float“可以四舍五入”,但从int到double“可以保留”

这两种情况是否应该相同?(我想两者都没有舍入?)

这两种情况是否应该相同

不可以。典型的
float
最多只能精确表示224个整数值,而
double
最多可以表示253个整数值

典型的
int
是32位的,因此224到231范围内的一些
int
值在没有舍入的情况下不会转换为
float


为了扩展这一思想,大的
long-long
值在转换为
float
double
时可能会四舍五入


另一种查看32位
int
和32位
float
的方法。每个可以代表大约232个不同的值。由于
float
可以用小数部分表示许多值,因此必须有
int
值不能像
float
那样精确表示