麻烦各位帮忙看一下,这句话是不是反了?(类型转换),该如何处理
麻烦各位帮忙看一下,这句话是不是反了?(类型转换)
在《C++ primer》上看到的这一个例子(P288--389)
int i;
void calc(float);
int main()
{
calc(i);-------------1
return 0;
}
针对句1,后面有这样几句原话:
"当用户调用calc()时,浮点-整值标准转换把实参从int型转换成float型.根据存储在i中值的情况,可能无法保证把i的值存储在类型float的参数内并且不损失精度."
请问这句话是不是反了?int型转换为float型怎么会损失精度呢?
谢谢各位帮忙解答!
------解决方案--------------------
int精度32位,float精度好像是(23 + 1)位,你说有没有损失精度?
------解决方案--------------------
123456789在int中是能精确保存的
但存在float中,大概只能是1.234567e8,后面的89损失了.
在《C++ primer》上看到的这一个例子(P288--389)
int i;
void calc(float);
int main()
{
calc(i);-------------1
return 0;
}
针对句1,后面有这样几句原话:
"当用户调用calc()时,浮点-整值标准转换把实参从int型转换成float型.根据存储在i中值的情况,可能无法保证把i的值存储在类型float的参数内并且不损失精度."
请问这句话是不是反了?int型转换为float型怎么会损失精度呢?
谢谢各位帮忙解答!
------解决方案--------------------
int精度32位,float精度好像是(23 + 1)位,你说有没有损失精度?
------解决方案--------------------
123456789在int中是能精确保存的
但存在float中,大概只能是1.234567e8,后面的89损失了.
- C/C++ code
void main() { int i=123456789; float f=i; cout<<i<<endl<<f<<endl; }