gpt4 book ai didi

c - strtof-返回错误的数字

转载 作者:行者123 更新时间:2023-11-30 19:04:04 33 4
gpt4 key购买 nike

编辑-

所以我明白这个问题没有解决办法。有谁知道 C 中的函数可以从数组(str)返回 31-38 索引吗?

嘿,我的 strtof 函数有问题,我在互联网上找不到该问题的解决方案,有人可以帮忙吗?

这里有一个简单的函数:

float getCord(int placeOnArray, char str[80]){
char str2[7];
for (int i=placeOnArray ;i<placeOnArray+7;i++){
str2[i-placeOnArray]=str[i];
}
float f1;
f1=strtof(str2,NULL);
return f1;

}

输入- str= ATOM 1 N ASN A 1 -4.890 -12.296 -15.280 1.00 30.36 N,放在 array=31 上

期望的结果:-4.890,返回结果:-4.88999987

最佳答案

strtof 按预期工作:

考虑这个小程序:

#include <stdio.h> 
#include <stdlib.h>

int main ()
{
float f = strtof("4.890", NULL);
printf("%10.10f\n", f);
}

输出为:

4.8899998665
<小时/>

4.890 没有精确的浮点表示。您需要阅读这篇文章:

此外,您的 getCord 函数也是错误的:

这是一个更简单且正确的替代方案:

float getCord(int placeOnArray, char str[]) {
return strtof(str + placeOnArray, NULL);
}

无需提取代表数字的字符串,可以直接扫描原始字符串中的数字。 strtof 将在不同于 0-9'.' 的第一个字符处停止。将上面程序中的第一行更改为 float f = strtof("4.890 ", NULL);,输出将是相同的。

关于c - strtof-返回错误的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52928393/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com