转换浮点值

时间:2013-11-06 02:36:56

标签: c floating-point modulo

我正在尝试让程序打印出浮点值。我试过放%f,它给了我相同的数字但最后有0。在我的函数定义中,我试图使temp加倍,但它一直说“表达式必须具有整数类型。”

#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;
}

2 个答案:

答案 0 :(得分:2)

你不能在double上使用模数(%)运算符。

答案 1 :(得分:1)

您的计划存在许多问题。

首先,%是一个整数运算符,因此您不能在浮点类型上使用它。请改用fmod()

其次,您将value声明为double,但随后将其作为int

读取
scanf_s("%d", &value);

这会导致未定义的行为

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