①整型数据相加,系统默认为整型
int a,b,c;
c=a+b;
若int a,b;
float c;
c=a+b;则会产生错误,但visual 6.0 C++系统会给予warning,这种错误会忽略
可以通过强制类型转换符将整型数据相加结果转换为浮点型
Int a,b;
(float)(a+b);
如果是将整型数据相加结果转换为浮点型的话,结果是一定准确的,而且精确到小数点后6位,
②为什么说浮点数不准?
这是因为有效位数的问题,如果用很大的浮点数加上一个很小的浮点数,那么会产生大数吃小数的误差,所以不准
例如:
#include
void main()
{
float a,b;
a=123456.789e5;
b=a+20;
printf("%f\n",b);
}
结果本应该为12345678920,但由于一个浮点数只能保证有效数字7位,后面的无意义,所以编译后输出可能为:12345678848.000000
整型数据的尺寸有限,乘除较多的话,很快就溢出了!
浮点加减,对差别很大的数据,会造成精度丢失,各有利弊,看你需要使用;如果都不满足要求的话,自己定义一个合适的类型,就可以了!