快捷导航

正常写完代码为什么结果是69.400002,这个2怎么来的

#include float time(int x){  if(x>=23||x>=0&&x3)  {    float c=(y-3)*2.3+begin+1;    return c;  }  else  {    int d=begin+1;    return d;  }}int main(){  float a,b,c,d;  a=9;  b=12;  c=6;  d=12;  float e=time(a)*kilometre(b)+time(c)*kilometre(d);  printf("小明每天打车的总费用是%f\n",e);  return 0;}

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员1

在计算机存储数字的时候是使用的是二进制的形式,存储整数一般不会有误差,但是在存储小数的时候就会出现误差了,对于float类型来说,它的精度并不是很高,在你的程序中你使用到了2.3这个float类型的数字,你可以试着看一下这行语句的打印结果printf("%.10f", (float)2.3),会发现打印的结果并不是预期中的2.3000000000这个数字,而是一个稍微小上一丢丢的数字。如果使用double类型的话会更好,因为double类型的精度更高,试着看一下这行语句的打印结果printf("%.10lf", (double)2.3),会发现是预想中的结果2.3000000000,但实际上如果输出位数在多一些的话,也会看出来一些误差。
总的来说,就是在计算机进行浮点数的运算时,会涉及到一个精度问题,而你的代码之所以会打印出来的结果和预期不同,就是因为运算时的误差,如果想要深入的了解,建议看一下关于计算机中数字的存储以及计算相关知识。
回复

使用道具 举报

可能感兴趣的问答

发新帖
TA的信息
  • 会员所属: 注册会员
  • 认证信息: 邮箱认证手机认证
  • 微信访问
  • 手机APP