lsxxmh 发表于 2012-8-6 15:13:49

字符串转数字函数?? 【悬赏问答】

atof(将字符串转换成浮点型数)
相关函数
     atoi,atol,strtod,strtol,strtoul
表头文件
     #include
定义函数
     double atof(const char *nptr);
函数说明
     atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
返回值
     返回转换后的浮点型数。
 
#include
double a1;
double b1;
int JS()
{
    a1=atof("123456.789");
    b1=123456.789;

MDK编译  STM32 MCU
为何a1的结果只有整数部分123456,而小数部分没有?
望高人指点!!

yjwpm 发表于 2012-8-6 16:58:36

RE:字符串转数字函数??

你有没有做 8字节对齐呢.好像你还有几个头文件没有包含...
atof  参数 是指针形式的
 
 
#include
#include
int main(void)
{
char *str="123.99";
double l=atof(str);
printf("string = %s ,double = %lf\n", str, l);
return 0;
}

银洋电子 发表于 2012-8-7 09:18:50

RE:字符串转数字函数??

好东西!谢谢:lol:L

lsxxmh 发表于 2012-8-7 10:15:02

RE:字符串转数字函数??

现在主要问题是
a1=atof("123456.789");
这句在pc机上用c/c++编译执行 a1的结果是正确的,
而在用MDK编译执行 a1的结果就是没有小数部分!
double l=atof(str);
这样用MDK编译执行 l的结果也没有小数部分!

yjwpm 发表于 2012-8-7 12:31:12

RE:字符串转数字函数??

把你的变量使用 __align(8) double a1;这样定义看看是否正确.
 
我在MDK下使用的atof函数就没有出现你的那种问题....
 
如果还不行就按下面的方式试试..
 

航天航海 发表于 2012-8-8 17:47:45

RE:字符串转数字函数?? 【悬赏问答】

没出现过这个问题。:o

zykzyk-93033 发表于 2012-8-9 20:51:16

RE:字符串转数字函数?? 【悬赏问答】

编译器不同造成的吧。:D

蓝调街口-366393 发表于 2012-8-13 10:34:12

RE:字符串转数字函数?? 【悬赏问答】

只能看到部分函数,你看是不是你函数的返回类型是int而不是double类型所造成的:)

瘦猪呆兔 发表于 2012-8-17 15:02:05

RE:字符串转数字函数?? 【悬赏问答】

一般我的处理方式是,为了获取比较好的数据,比如有三位小数的话,结果乘以1000,呵呵不然计算起来太烦了

liuqs-359554 发表于 2012-8-18 09:56:58

RE:字符串转数字函数?? 【悬赏问答】

PC平台和STM32的架构,一个X86,一个ARM架构,你如果想看看在ARM架构什么结果的话,在LINUX下用ARM-LINUX-GCC来编译下,看看啥结果,这样就最准确了,MDK这个集成开发环境的话,你或许能从反汇编找原因
页: [1]
查看完整版本: 字符串转数字函数?? 【悬赏问答】