将char转换为c中的float

时间:2015-06-14 14:55:26

标签: c floating-point char type-conversion

我需要将char转换为float。我知道我们可以在atof()函数的帮助下完成这项工作。但我不想创建另一个变量来保持浮动。我希望转换后的float放在同一个变量中。喜欢这个

operand = atof(operand)

这里的操作数是char类型。我也尝试过像这样的

(float)operand = atof(operand)

但没有用。

以下是整个代码:

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

void main() {
    float operand = 0.0F ;
    char operator = '0' ;
    printf("\nFollowing operators are supported : + - * / S E\n") ;
    float acc = 0.0F ;
    while((operand = getchar()) !=0 && getchar()==' ' && (operator = getchar()) != 'E') {
            (float)operand = atof(operand) ;
            switch (operator) {
                    case '+' : printf("\nAdd %f to Accumulator.\tResult : %f\n", operand , operand + acc);
                               acc+= operand ;
                    break ;
                    case '-' : printf("\nSub %f from Accumulator.\tResult : %f\n", operand, acc - operand);
                               acc-= operand ;
                    break ;
                    case '*' : printf("\nMultiply Accumulator with %f.\t Result : %f\n", operand, operand * acc);
                               acc = acc * operand ;
                    break ;
                    case '/' : printf("\nDivide Accumulator by %f.\tResult : %f\n", operand, acc / operand);
                               acc = acc / operand ;
                    break ;
                    case 'S' : printf("\nSet Accumulator to %f\n",operand) ;
                               acc = operand ;
                    break ;
                    default : printf("\nInvalid syntax\n") ;
            }
    }

}

欢迎任何帮助。

2 个答案:

答案 0 :(得分:4)

atof未将char转换为float,它会将表示浮点数的字符串转换为double

要将char转换为float,只需指定它,就会有从charfloat的隐式转换。

  signed char a = 4;
  float f = a;  // f now holds 4.f

答案 1 :(得分:3)

虽然它与&#34;将char转换为浮动&#34;不同,但是根据你问题中的各种提示,我认为你真正想要的是:

operand = operand - '0';

这会将operand中的(通常)ASCII值转换为它所代表的值,从0到9。

通常,getchar返回键入的字符的字符代码。因此,例如,数字&#39; 0&#39;的ASCII码。是48(并且&#39; 1&#39;是49,依此类推)。如果用户输入了&#39; 0&#39; 0那么getchar将返回48,这是数字0的字符代码。现在,如果你减去&#39; 0&#39; 0 (这是48) - 然后你得到0.这适用于数字0到9(即&#39; 1&#39; - &#39; 0&#39; = 1,&#39; 2&#39; - & #39; 0&#39; = 2等等。)