想把字符串转成double,程序如下。
#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
我用atof()l转换一个字符串为浮点数,在编译时不提示错误,可得到的结果总是0.0000。而同一字符串转换成整形,用atoi()可以得到该字符串的整数位,这是怎么回事?
一个变量 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的东西。
看书的时候有些不明白,望指教 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; } ...
我在使用atof()函数时候,遇到了很奇怪的问题!!!大家帮忙看看!!谢谢!!
#include
常用到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] 那么这些字节...
[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 为什么结果会是这样的?非常感谢!
本帖最后由 crazyhadoop 于 2013-10-22 15:17 编辑
bash-4.1$ more float_test.c
#include
main()
{
char s[]="3.587";
double f=atof(s);
printf("%f ",f);
}
打印结果240518169.000000
若在文件开头处加上#include
[code]const char * version; .... // 运行时version被赋予了"1.3.1" if (atof(version) >= 1.3) { .... // do sth. }[/code]这种方式个人揣测是可以依照我们期望去工作的,因为私以为atof在运行时对"1.3.1"的转double得到的结果同编译时读到1.3字面量转出的结果能够一致 但总觉得这种转码再比较的方法很别扭(用小数来理解版本号挺好,但这里只是近似小数的浮点),不知道大家有没这么玩儿的