字符串作为分数输入,如何将此字符串转换为float?
在下面的代码中,它总是只显示第一个数字而不进行任何计算,即:2.00
int main (void)
{
string fraction = "2/4";
float sum = atof(fraction);
printf("sum : %.2f\n",sum);
return 0;
}
答案 0 :(得分:3)
首先,你的假设是错误的。
字符串,例如"2/4"
, "2/4"
,它不是"0.5"
,也就是说,它不评估自己产生预期表达的结果。
那就是说,atof()
家庭是不安全的(至少,报告/处理错误情况很差,如果你检查了返回代码,在你的特定情况下,这会非常有用)使用strtod()
和家人。
答案 1 :(得分:2)
你不能直接这样做。随你而来,例如改变" 2.034"到2.034(f),但不是表达式(在你的情况下有一个除法)。
相反,如果您知道将始终存在分隔符号,则搜索分隔符号,而不是提取左右部分,使用atoi(字符串到整数),并将两个整数除(在转换为浮点数之后)。