C 转换浮点值

C 转换浮点值,c,floating-point,modulo,C,Floating Point,Modulo,我试图让程序打印出浮点值。我试过放%f,它给了我相同的数字,但最后是0。在我的函数定义中,我试图将temp设置为double,但它一直说表达式必须具有整数类型 #include <stdio.h> int modifyIntegral(); int main() { int value; value = modifyIntegral(); printf("The Updated value : %d\n", value); } int mod

我试图让程序打印出浮点值。我试过放%f,它给了我相同的数字,但最后是0。在我的函数定义中,我试图将temp设置为double,但它一直说表达式必须具有整数类型

#include <stdio.h> 

int modifyIntegral();

int main() {
    int value;

    value = modifyIntegral();

    printf("The Updated value : %d\n", value);   
}

int modifyIntegral() {
    double value;
    double temp;

    scanf_s("%d", &value);

    temp = (value < 0) ? -value : value;

    if (temp % 10 > temp / 100 % 10) {
        temp += -temp % 10 + temp / 100 % 10;
    }
    else {
        temp += 100 * (temp % 10 - temp / 100 % 10);
    }

    return (value < 0) ? -temp : temp;
}

不能在双精度上使用模数%运算符。

程序中存在许多问题

首先,%是一个整数运算符,所以不能在浮点类型上使用它。改用。但是,如果不删除小数部分,就无法通过这样获得模10来获得浮点值的位数

第二,将值声明为double,然后将其读取为int

scanf_s("%d", &value);
这将导致未定义的行为

我不明白你需要转换什么?像您这样的操作可以在整数中完成,也应该在整数中完成