c++数字反转代码错误

为什么还是没有正确输出结果?

img

以下为上次提问

a不是强制转换成int了吗?为什么还会报错?用这种方法存在什么问题?

img

img

用一个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;
    
} 

img

变量全是int,用lf输入输出都是错误的。
你这个转成字符串,倒着输出就哦了

首先你输出的都不是f
其次你的类型应该选double或float

c/c++是强类型编程语言,a 的数据类型是double,即便你赋值给他int、short还是char,都会隐含类型转换为double。希望你能理解。

全部数据类型换成double就可以了。强制a转换成int完全没有意义。double数据类型高于int类型。输出浮点数是需要double型的。因此,直接全部用double就可以了