#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float a,yx,xx,b;
int yz,xz,h,t,o;
cin>>a;
yz=floor(a);
yx=a-yz;
xz=yx*10;
h=yz/100;
t=(yz%100)/10;
o=yz%10;
xx=(h/1000.0)+(t/100.0)+(o/10.0);
b=xz+xx;
cout<<a<<" "<<yz<<" "<<yx<<" "<<b;
return 0;
}
本题使用以上算法时,部分情况答案正确。但当输入的a值为888.8时,输出的a,yz(原整数部分),yx(原小数部分),b(答案)却依次为888.8,888,0.799988,7.888。据此推测是“yx=a-yz”这一行出了问题。请问这是由于a(float)与yz(int)的数据类型不同吗?有解决方法吗?