为什么还是没有正确输出结果?
以下为上次提问
。
a不是强制转换成int了吗?为什么还会报错?用这种方法存在什么问题?
用一个int型变量存储输入的小数乘以10强制类型转为int后的结果,然后其他地方稍微改一下。
#include <iostream>
using namespace std;
int main(void){
int b,c,d,e,f;
double a;
scanf("%lf",&a);
int ia = int(a*10);
printf("ia=%d\n",ia);
b=ia/1000; //百位
c=ia/100%10; //十位
d=ia/10%10; //个位
e=ia%10; //小数位
double df=e*100+d*10+c+b*0.1;
printf("%.1lf",df);
return 0;
}
变量全是int,用lf输入输出都是错误的。
你这个转成字符串,倒着输出就哦了
首先你输出的都不是f
其次你的类型应该选double或float
c/c++是强类型编程语言,a 的数据类型是double,即便你赋值给他int、short还是char,都会隐含类型转换为double。希望你能理解。
全部数据类型换成double就可以了。强制a转换成int完全没有意义。double数据类型高于int类型。输出浮点数是需要double型的。因此,直接全部用double就可以了