【问题标题】:double gets rounded when returned返回时 double 取整
【发布时间】:2016-02-03 17:26:01
【问题描述】:

如何在没有得到rounded的情况下返回双精度:

int function() {
    double d = 5.894; 
    printf("d=%f\n", d);
    return d;
}

int main() {
    double d = function();
    printf("d=%f\n", d);
    return 0;
}

这给了我

d=5.894000
d=5.000000

我在这里缺少什么?

【问题讨论】:

  • 有人能解释一下否决票吗?!
  • 是吗?!我在等一个解释!
  • 刚刚在分类中审查了这个问题,没有投票,但我有一个解释:很多人会认为这太简单了,不值得在 StackOverflow 上提问。
  • 我知道,但为什么呢?我做了几个 C 教程,没有一个提到这个。另外,当我在谷歌上搜索时,您是否需要这个也不是很清楚。 Stackoverflow 也适用于初学者,不仅适用于高级内容。我做了我的研究并花了足够的时间,很抱歉我只是一个初学者并没有看到,但那是我的问题。像这样的论坛应该有这样的案例。我能想到的最起码的事情就是反驳。
  • 好的,所以现在,我抱怨了,我看到我删除了一个反对票。这似乎是完全随机的。我也会投反对票。

标签: c return double return-value


【解决方案1】:

你的函数返回 ٰint 它必须返回 double

改变

int function()

double function()

【讨论】:

    【解决方案2】:

    iharob的回答当然是正确的,但我认为知道以后如何避免此类错误也很重要。

    我也没有找到任何关于这种行为的明确引用(从“大”数字类型隐式转换为“较小”数字类型),所以我向question 询问了这个问题。

    简而言之,通过提供正确的编译警告标志,可以在编译时发现这些错误(例如-Wconversion),因为它几乎总是一个错误。

    但是,这种行为是设计使然,正如 Chris 在评论中提到的那样,就性能而言,有时它是 might be useful

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-27
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      相关资源
      最近更新 更多