你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
lsxxmh 提问时间:2012-8-6 15:13 /
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,而小数部分没有?
望高人指点!!
收藏 评论10 发布时间:2012-8-6 15:13

举报

10个回答
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:字符串转数字函数??

好东西!谢谢
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函数就没有出现你的那种问题....
 
如果还不行就按下面的方式试试..
 
3.JPG
航天航海 回答时间:2012-8-8 17:47:45

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

没出现过这个问题。
zykzyk-93033 回答时间:2012-8-9 20:51:16

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

编译器不同造成的吧。
蓝调街口-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这个集成开发环境的话,你或许能从反汇编找原因
xiaodc88 回答时间:2012-8-27 10:25:39

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

有特殊要求的,自己写一个得了,这个又不麻烦

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版