我想用C ++编写一个程序来编写一个十进制数字并输入Decimal之后的数字 例如0.26547 - > 5。
我写了这个,但没有正常工作:
int main()
{
int i=0,b;
float a ;
cin>>a ;
while(a!=0)
{
a*=10 ;
b=a ;
a-=b ;
i+=1 ;
}
cout<<i ;
}
例如,对于0.258而不是3,返回20。 可以解释一下这段代码的问题是什么? 谢谢
答案 0 :(得分:2)
C ++允许浮点数的十进制表示,但据我所知,所有现存的实现都使用二进制表示。然后将用户的十进制数规范存储为浮点值的想法丢失了关于十进制数字的关键信息:它们根本就不存在了。因此,要计算规范中的小数位数,必须将其存储为字符串。
的伪代码:
getline
。stod
。答案 1 :(得分:0)
我不确定为什么你的代码不起作用(你使用什么编译器?),但我认为它可能与
有关b=a;
尝试将float显式转换为int
b = int(a);
或者,你可以选择不使用int,并使用函数floor
将float向下舍入,包括math.h #include <math.h>
float a = 5.9f;
float b = floor(a);
a -= b;