Turbo C 2.0 中的double型乘法问题,急待解决!!

来源:百度知道 编辑:UC知道 时间:2024/06/01 01:33:28
*************************以下是程序源码*************************

#include <math.h>
#include <stdio.h>
#define PI 3.14159265358979323846

int main()
{
double ymax1,ymax2,plus;
clrscr();
ymax1=sin(atan2(1.0,25.0))*exp(-25.0/1.0*atan2(1.0,25.0));
ymax2=-sin(atan2(1.0,25.0)+9*PI)*exp(-25.0/1.0*(atan2(1.0,25.0)+9*PI));
plus=200/ymax1;
printf("ymax1 = %.20f\nymax2 = %.20f\nplus = %.20f\nplus*ymax1 = %.20f\nplus*ymax2 = %.20f",ymax1,ymax2,plus,plus*ymax1,plus*ymax2);
getch();
return 0;
}

*************************以下是运行结果*************************
ymax1 = 0.01471125600425229880
ymax2 = 0.00000000000000000000
plus = 13595.03226251992780000000
plus*ymax1 = 200.00000000000000000000
plus*ymax2 = 13595.03226251992780000000

*************************以下是问题说明*************************

我用的是Turbo C 2.0。
大家注意输出结果最后一行:一个数乘以"

tc 里面整型是2b,VC++里面是4B,就这个区别,其他没什么大的区别

tc太过古老,有可能编译器有某种问题。你可以先把计算结果放在变量里,然后再输出看看。或者调整计算顺序,或者简化计算公式,这些都可以避免编译器的问题。
当然最好采用最新的编译器。

编译器 问题