gpt4 book ai didi

在 C 中将字符串转换为 float ?

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:50 25 4
gpt4 key购买 nike

是的,所以在我的 C 程序中我有一个从文件中获取浮点值的函数,在这里我试图做相反的事情,获取字符串并将其转换为 float 。

 float PsSc = atoi(stock01[DataCount].defPsSc);

我知道我的错误,我认为它适用于整数和 float ,但事实并非如此。

我试过了

 float PsSc = atof(stock01[DataCount].defPsSc);

那也行不通。

所以,我的问题是:我可以用什么替换我当前的代码行以使其正常工作?

输入:1.45。预期输出:1.45,实际输出:1.00

编辑:

 printf("\nYour previous speed was : %.2f Metres per Second",PsSc);

最佳答案

strtod() 功能系列就是您要找的。

不仅会strtod()将输入字符串转换为 double (使用 strtof() 表示 floatstrtold() 表示 long double),它还会告诉您它在何处停止解析输入字符串(通过第二个参数)。

请注意,无论是 strtod() 都取决于区域设置或 atof()期望小数点或小数点逗号...

#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <errno.h>

#include <stdio.h>

int main()
{
// play with "." vs. "," to see why this might be your problem
char * input = "1.45";

// will take a pointer beyond the last character parsed
char * end_ptr;

// strto...() might give an error
errno = 0;

// convert
float result = strtof( input, &end_ptr );

if ( errno == ERANGE )
{
// handle out-of-range error - result will be HUGE_VALF
puts( "out of range" );
}

if ( end_ptr != ( input + strlen( input ) ) )
{
// handle incomplete parse
printf( "Unparsed: '%s'\n", end_ptr );
}

printf( "result: %.2f\n", result );
return 0;
}

关于在 C 中将字符串转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27986672/

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