c++primer3中,有一句话说:实参从int类型转换成float类型,可能无法保证不损失精度,这怎么会呢

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:21:27
c++primer3中,有一句话说:实参从int类型转换成float类型,可能无法保证不损失精度,这怎么会呢
\/

比如有这个函数:
void func(int a)
{
float b = a;
}

你在调用的时候有如下
func(0x7ffffffe);
在32位操作系统下,这个数是INT类型的最大值-1(正的),在转换成float的时候必然精度不够....

看看int能表示多少位精度?
而float的基数部分是多少位精度就行了。(float和int在32位操作系统下大多是32位的,而float这32位除了有基数部分,还有指数部分,所以会丢失精度)

什么?范围一样??int和float的范围是不一样的啊....