ChinaUnix.net
相关文章推荐:

atof 失败

想把字符串转成double,程序如下。 #include #include int main(void) { double f; char *str = "46.2"; f = atof(str); printf("string = %s float = %.1f\n", str, f); return 0; } 如果把#include 删掉,结果很诧异: string = 46.2 float = 1078401433.0 加上,结果为: string = 46.2 float = 46.2 查了下手册,atof需要引入#include ,为什么不引也能编译通过...

by watanuo - C/C++ - 2009-11-02 19:21:50 阅读(1369) 回复(3)

相关讨论

大家好,我在编写一个程序时使用了atof,发现了一个问题,请教一下: #include "stdio.h" #include "stdlib.h" main() { char p[1024]="153.23"; long pp; pp = atof(p)*100; printf("p==>;%lf,pp==>;%ld\n",atof(p)*100,pp); } 结果为:p==>;15323.000000,pp==>;15322

by 凌霄 - C/C++ - 2004-02-26 14:36:50 阅读(2186) 回复(6)

我用atof()l转换一个字符串为浮点数,在编译时不提示错误,可得到的结果总是0.0000。而同一字符串转换成整形,用atoi()可以得到该字符串的整数位,这是怎么回事?

by xfzn - C/C++ - 2014-09-11 09:02:48 阅读(9008) 回复(6)

一个变量 char aczValue[99+1]; 在fun1内定义,未做过初始化, 在fun2内作为一个输出参数, fun2( *,*, char *aczValue) { memcpy( aczValue, ptr, 7 ); } 在fun1内得到这个输出的aczValue后, 做了一个atof的转换, dbl1 = (double) atof( aczValue ); 请问: 这个dbl1是否会变成不是7位的东西? 谢谢。 比如,aczValue前面7位是1234567, dbl1是否可能会变成12345670的东西。

by bluesgone - C/C++ - 2009-11-30 08:31:11 阅读(3374) 回复(8)

看书的时候有些不明白,望指教 double atof(char s[]) { double val,power; int i,sign; for(i=0;isspace(s);i++)//跳过空白 ; sign=(s=='-')?-1:1; if(s=='+'||s=='-') i++; for(val=0.0;isdigit(s);i++)//这个是什么意思 val=10.0*val+(s-'0'); if(s==".") i++; for(power=1.0;isdigit(s);i++)//这个是什么意思 { val=10.0*val+(s-'0'); power*=10.0; } return sign*val/power; } ...

by wheniwasyoung - C/C++ - 2009-06-14 10:36:03 阅读(3998) 回复(5)

我在使用atof()函数时候,遇到了很奇怪的问题!!!大家帮忙看看!!谢谢!! #include #include int Send_Function_Power(char *buff1) { float f; float value; char *str = "12345.67"; f = atof(str); printf("string = %s float = %f\n", str, f); value=atof(buff1); printf("value=%f\n",value); } 输入结果: 第一次调用(*buff1=25) string = 12345.67 float = 7.300000 value=7.300000 第...

by wuyunzdh - C/C++ - 2008-11-07 18:13:30 阅读(8819) 回复(15)

常用到atoi/atol/atof转换函数, 很容易理解当string是ASCII中单个字符时的转换, 但当string是一个字符串时如 [CODE] const char* p = "1000.29" long result = atol(p); //结果应该是:1000.29, 难道不是吗? [/CODE] 字符串"1000.29"在内存中占有7个字节: [CODE] [ASCII中1的编码] [ASCII中0的编码] [ASCII中0的编码] [ASCII中0的编码] [ASCII中0的编码] [ASCII中.的编码] [ASCII中2的编码] [ASCII中9的编码] [/CODE] 那么这些字节...

by SybaseLU - C/C++ - 2006-09-15 16:28:45 阅读(5058) 回复(6)

[root@titan c]# more atof.c #include "stdio.h" int main(void) { float b,d; char *a="100.23"; b=atof(a); printf("%2f\n",b); return 0; } [root@titan c]# ./a.out 1374389504.000000 为什么结果会是这样的?非常感谢!

by tingyu - C/C++ - 2006-07-06 12:12:18 阅读(986) 回复(3)

本帖最后由 crazyhadoop 于 2013-10-22 15:17 编辑 bash-4.1$ more float_test.c #include #include int main() { float f = atof("12.4"); printf("%f\n", atof("12.4")); printf("%f\n", f); printf("%f\n", atof("11.3")); return 0; } bash-4.1$ gcc -O3 -g -o float_test float_test.c bash-4.1$ ./float_test 0.000000 0.000000 0.000000 另一台机器上: ...

by fly3ds - Linux环境编程 - 2013-10-24 14:27:03 阅读(1992) 回复(14)

main() { char s[]="3.587"; double f=atof(s); printf("%f ",f); } 打印结果240518169.000000 若在文件开头处加上#include ,打印结果才是正确的3.587000。请问大家这是为什么呢,实在很费解

by gta - C/C++ - 2013-03-11 15:31:52 阅读(1391) 回复(1)

[code]const char * version; .... // 运行时version被赋予了"1.3.1" if (atof(version) >= 1.3) { .... // do sth. }[/code]这种方式个人揣测是可以依照我们期望去工作的,因为私以为atof在运行时对"1.3.1"的转double得到的结果同编译时读到1.3字面量转出的结果能够一致 但总觉得这种转码再比较的方法很别扭(用小数来理解版本号挺好,但这里只是近似小数的浮点),不知道大家有没这么玩儿的

by jeung - C/C++ - 2012-12-02 15:26:56 阅读(1235) 回复(5)