【问题标题】:Converting floating-point values转换浮点值
【发布时间】:2013-11-06 02:36:56
【问题描述】:

我正在尝试让程序打印出浮点值。我试过输入%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;
}

【问题讨论】:

    标签: c floating-point modulo


    【解决方案1】:

    您不能对双精度数使用模数 (%) 运算符。

    【讨论】:

      【解决方案2】:

      你的程序有很多问题。

      首先,% 是一个整数运算符,因此您不能在浮点类型上使用它。请改用fmod()。但是如果不删除小数部分,您无法通过像这样获得模 10 来获得浮点值的数字

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

      scanf_s("%d", &value);
      

      这会导致未定义的行为

      我不明白您需要转换什么?像您所做的那样的操作可以完成并且应该以整数完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-12
        • 2019-05-09
        • 2016-04-14
        相关资源
        最近更新 更多