0
我需要从浮点数中计数数字并保留该数字。我可以使用scanf为%f或%c,但不是%s,我可以使用getchar()。 我可以使用getchar,但不适用宽松的号码计数浮点数(hw)C
我需要从浮点数中计数数字并保留该数字。我可以使用scanf为%f或%c,但不是%s,我可以使用getchar()。 我可以使用getchar,但不适用宽松的号码计数浮点数(hw)C
为什么你会丢失号码getchar
?
strtod
,以确保它是一个有效的浮点值如果你只限于getchar
:
getchar
正如我看到你已经得到了你的答案,但这是否也适用于你?
#include <stdio.h>
int main()
{
char *str = new char[30];
float flt;
int count = 0;
scanf("%f", &flt);
printf("number you entered is: %f\n", flt);
sprintf(str, "%f", flt);
for(;str[count] != '\0'; count++);
printf("%f have %d digits", flt, count-1);
return 0;
}
对不起,如果我不清楚,我不能使用字符串。我只能保存一个字符(一次只有一个)或一个数字(仅限于使用scanf和getchar) – 2010-01-01 08:18:13
已更新我的答案HTH。因为这是一个硬件问题,为了获得更多的帮助,你应该发布一些你自己的代码,并确切地注意你的问题 – 2010-01-01 08:25:21
解析0.123是更好的读取“123”部分作为一个整数和一步将它除以1000。由于IEEE 754浮点数不能表示0.1,0.02或0.003,因此您的方法会累积更多的舍入误差。 – 2010-01-01 08:46:13