以下是引用duwn124在2010-8-10 22:14:24的发言:
main()
{
double x=54321987000;
printf("%f\n",x);
}
输出的结果是2782379448.000000,而不是54321987000。
若将函数改为
main()
{
double x=54321987e3;
printf("%f\n",x);
}
就可得到想要的数据,不知为什么,请高人指点,谢谢!
好像你是在TC 环境下?
如果换到VC环境 就没问题了!!
原因解析:
Turbo C 是标准C的编译器 语句 double x=54321987000; 其中数字"54321987000"默认为长整型(有符号),存放到内存后由于长整型取值范围是[-2147483648,2147483647] 所以出现了长整型数据溢出情况,计算机经过对4294947296 取模后结果为2782379448,所以程序运行结果为2782379448.000000
纠正的办法可为以下几种:
double x=54321987000.0;
/* 用小数形式表示常数 */
double x=54321987e3;
/* 用指数形式表示常数 */
[
本帖最后由 jack10141 于 2010-8-10 22:43 编辑 ]