Tag: atof

如何解析通过TCP收到的数字字符串

我通过TCP从传感器接收数据,输出如下: 它是双倍价值的6倍。 我只需要前三个。 在X,Y和Z方向上的力可以获得合力。 我被告知我正在回收’传感器流的双字符串表示’并且我应该使用atof函数,该函数接受表示浮点数的字符串并返回double。 所以,问题是。 我正在使用以下代码从传感器接收数据 char recvbuf[DEFAULT_BUFFER_LENGTH]; int iResult = recv(ConnectSocket, recvbuf, DEFAULT_BUFFER_LENGTH, 0); double n; n = atof (recvbuf); 输出总是错误的,要么我得到错误的数据,30000而不是0.1414,或者我读取0.15为0.有关如何获得所有3个数据的任何提示? 我使用BUFFER = 50,因为我不需要阅读更多,我甚至不知道总共多长时间,来自传感器的字符串是。

有没有人知道atolf c函数?

我正在寻找一个类似于atol (char *到long int)但atofl (char到long double)的函数,有没有人知道这样做的库,或者一个简单的方法来执行此操作,因为在“0.00000005”上使用atof抛弃了5? 谢谢。

使用atof函数有什么问题?

int main() { char str[10]=”3.5″; printf(“%lf”,atof(str)); return 0; } 这是我在ideone.com上测试的一个简单代码。 我得到的输出为 -0.371627

atof和非null终止字符数组

using namespace std; int main(int argc, char *argv[]) { char c[] = {‘0′,’.’,’5′}; //char c[] = “0.5”; float f = atof(c); cout << f*10; if(c[3] != '\0') { cout << "YES"; } } 输出: 5YES atof也可以使用非null终止的字符数组吗? 如果是这样,它怎么知道停在哪里?

使用“D”代替“E”读取ASCII数字用于科学记数法

我有一个数字列表,如下所示: 1.234D+1或1.234D-02 。 我想用C读取文件。函数atof只会忽略D并只翻译尾数。 函数fscanf将不接受格式’%10.6e’因为它期望指数中的E而不是D 当我在Python中遇到这个问题时,我放弃了,只是在从string转换为float之前使用了字符串替换。 但在C中,我确信必须有另一种方式 。 那么,对于科学记数法,您如何使用D而不是E来读取带有数字的文件? 请注意,我并不是指如何读取字符串本身,而是如何将它们转换为浮点数。 谢谢。

atof()返回含糊不清的值

我试图使用atof并接收模糊输出将字符数组转换为c中的double。 printf(“%lf\n”,atof(“5”)); 版画 262144.000000 我惊呆了。 有人可以解释一下我哪里出错了吗?

将字符串转换为C中的双变量

我编写了以下代码….它应该将像“88”这样的字符串转换为double值88并打印出来 void convertType(char* value) { int i = 0; char ch; double ret = 0; while((ch = value[i] )!= ‘\0’) { ret = ret*10 +(ch – ‘0’); ++i; } printf(“%d”,ret);//or %f..what is the control string for double? } //input string :88 但它总是打印0 …但是当我将ret的类型更改为int …它工作正常…当类型为float或double时,它打印为零…所以为什么我得到这个模棱两可的结果?

在C中实现atoi

我无法理解以下atoi实现代码,特别是这一行: k = (k<<3)+(k<<1)+(*p)-'0'; 代码: int my_atoi(char *p) { int k = 0; while (*p) { k = (k<<3)+(k<<1)+(*p)-'0'; p++; } return k; } 有人可以向我解释一下吗? 另一个问题: atof实现算法应该是什么?

不包括stdlib.h不会产生任何编译错误!

希望这是一个非常简单的问题。 以下是我的C pgm(test.c)。 #include //#include int main (int argc, char *argv[]) { int intValue = atoi(“1”); double doubleValue = atof(“2″); fprintf(stdout,”The intValue is %d and the doubleValue is %g\n”, intValue, doubleValue); return 0; } 请注意,我正在使用stdlib.h中的atoi()和atof(),但我没有包含该头文件。 我编译pgm(gcc test.c)并且没有编译错误! 我运行pgm(./a.out),这是输出,这是错误的。 The intValue is 1 and the doubleValue is 0 现在我包含stdlib.h(通过删除#include之前的注释)并重新编译它并再次运行它。 这次我得到了正确的输出: The intValue is 1 and the […]

将char *转换为float或double

我有一个从文件读入的值,并存储为char *。 值是货币编号,#。##,##。##或###。##。 我想将char *转换为我可以在计算中使用的数字,我尝试过atof和strtod,他们只是给我垃圾数字。 这样做的正确方法是什么,为什么我做错的方式呢? 这基本上就是我正在做的事情,只是从文件读入char *值。 当我打印出temp和ftemp变量时,它们只是垃圾,巨大的负数。 另一个编辑: 我在gcc中运行这个 #include int main() { char *test = “12.11”; double temp = strtod(test,NULL); float ftemp = atof(test); printf(“price: %f, %f”,temp,ftemp); return 0; } 我的输出是价格:3344336.000000,3344336.000000 编辑:这是我的代码 if(file != NULL) { char curLine [128]; while(fgets(curLine, sizeof curLine, file) != NULL) { tempVal = strtok(curLine,”|”); pairs[i].name= strdup(tempVal); tempVal […]