如何将以字符串形式输入的分数转换为C中的浮点数

时间:2018-01-05 12:47:40

标签: c

字符串作为分数输入,如何将此字符串转换为float?

在下面的代码中,它总是只显示第一个数字而不进行任何计算,即:2.00

int main (void)
{
    string fraction = "2/4";
    float sum = atof(fraction);
    printf("sum : %.2f\n",sum);
    return 0;
}

2 个答案:

答案 0 :(得分:3)

首先,你的假设是错误的。

字符串,例如"2/4" "2/4",它不是"0.5",也就是说,它不评估自己产生预期表达的结果。

那就是说,atof()家庭是不安全的(至少,报告/处理错误情况很差,如果你检查了返回代码,在你的特定情况下,这会非常有用)使用strtod()和家人。

答案 1 :(得分:2)

你不能直接这样做。随你而来,例如改变" 2.034"到2.034(f),但不是表达式(在你的情况下有一个除法)。

相反,如果您知道将始终存在分隔符号,则搜索分隔符号,而不是提取左右部分,使用atoi(字符串到整数),并将两个整数除(在转换为浮点数之后)。