atoi函数执行后的结果不一致!!!

用atoi和atol或者strtol函数,执行的结果不一致,输入 的str类型的3.00,转化出来的结果是3.03,为什么,如何变成3.00????是我的函数用错了吗?????????不能输入3,必须输入3.00,这是需求。

atoi和atol或者strtol函数转换出来的都是整型,即使赋值给一个浮点型,也是经过强制类型转换了。


要转换浮点用atof函数,用法:atof(str);

#include<stdio.h>
#include<stdlib.h>
int main()
{
  char c[100]="3.00";
  float a;//浮点型
  
  a = atoi(c);
  printf("%f\n",a);//对应输出用%f
  a = atol(c);
  printf("%f\n",a);
  a = strtol(c,NULL,10);
  printf("%f\n",a);
  a = atof(c);
  printf("%f\n",a);
}

这段程序出来的结果:


把其中char c[100]="3.00";改为char c[100]="3.03";

结果最后一个会不同:

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-04
你是不是定义的 float 的类型,换成 double 的类型试试吧
相似回答