【问题标题】:C convert int to double in a functionC在函数中将int转换为double
【发布时间】:2016-07-24 07:56:33
【问题描述】:

当我使用函数时,我无法从数学方程中得到相同的结果。这是我的代码。

#include <stdio.h>
int main ()
{
    int a=5, b=2;
    double c;
    c = (double) a/b;
    printf("%f\n", c);

    c = Divide(a);
    printf("%f\n", c);

    return 0;
}

int Divide(int value)
{
    return value =(double) value/2;
}

当我运行代码时,我得到:

2.500000
2.000000

我试图为两者获得 2.50000。我已尝试将功能更改为

double Divide(double value)

没有运气。我是 C 和一般编码的新手,我卡住了。感谢任何可以帮助我的人。

【问题讨论】:

  • return value =(double) value/2; 执行浮点除法,得到2.5,然后将值赋回带有截断的int,返回2。删除 value = 部分将提供预期的行为。
  • 感谢您的回复。你写的对我来说很有意义。我能够让这个功能工作

标签: c function int double


【解决方案1】:

你可以这样做:

#include <stdio.h>

double divide(double value) {
    return value = value/2.0;
}

int main ()
{
    double a=5.0, c;
    int b=2;

    c = (double) a/b;
    printf("%f\n", c);

    c = divide(a);
    printf("%f\n", c);

    return 0;
}

【讨论】:

    【解决方案2】:
    int Divide(int value)
    

    改成

    double Divide(double value)
    

    由于您的值是整数类型,因此它将整数值分配给浮点数,该浮点数将为 2.0

    【讨论】:

    • 感谢您的回复。在编码中似乎有数百万种剥猫皮的方法。根据您的回复和其他一些回复,我能够使该功能按预期工作。
    【解决方案3】:

    将a 转换如下并更改返回类型。

     #include <stdio.h>
     int main () {
       int a=5, b=2;
       double c;
       c = ((double) a)/b;
       printf("%f\n", c);
    
       c = Divide(a);
       printf("%f\n", c);
    
        return 0;
    }
    
    double Divide(int value) {
      return value = ((double)value)/2;
    }
    

    【讨论】:

    【解决方案4】:

    您有两个问题:第一个与函数返回类型有关,返回 int 将始终截断浮点值。

    第二个问题是你不返回除法的结果,你在赋值后返回变量value的值,因为value是一个整数,你将返回截断的值。将作业交给它:return (double) value / 2;

    【讨论】:

    • 感谢您的回复。在您的帮助下,我能够让这个功能按我想要的方式工作。
    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    相关资源
    最近更新 更多