float 的精度变化了
谁帮忙运行一下下面这段代码?程序代码:
#include <stdio.h> int main(){ float a; float b; scanf("%f",&a); printf("%f\n",a); scanf("%f",&b); printf("%f\n",b); return 0; }
我运行的结果:输入51.2时 输出是 51.200001 而不是51.200000。请问这是哪里的问题?
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> int main(){ int choose; double sx; float m,x; printf("请输入数据:\n"); printf("x= "); scanf("%f",&x); printf("确认x = %f\n\n",x); printf("s= "); scanf("%f",&sx); printf("确认s= %f\n\n",sx); //输出乱了 bool findResult = false; //控制循环 srand(time(NULL)); //随机数种子 printf("正在计算结果...\n"); while(!findResult){ float rx = (float)(rand())/(RAND_MAX+1); printf("%f\t",rx); m = -1 + rx*(100+1); printf("%f\t",m); double molecular = sinh((m * x)) + sinh(m * (120 - x)); //分子 printf("%f\n",molecular); double denominator = sinh((m * 120)); //分母 printf("%f\n",denominator); if(fabs(sx-(molecular/denominator))<0.000001){ //如果计算结果等于输入的sx的值则输出 printf("计算结果:s = %f\n molecular/denominator = %f",sx,molecular/denominator); findResult = true; printf("\n\n计算得结果:m = %f\n\n",m); // choose = chooseWindow(); // printf("%d",choose); } } return choose; }当我输入(x)0 、(sx)51.2 后,我的眼里只有乱码了