返回

2016-02-03 34 views
-1

双时被四舍五入我如何返回一个双没有得到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 

缺少什么我在这里?

+0

有人可以解释downvote?! – Tom

+0

所以呀?!我正在等待解释! – Tom

+0

刚刚在分流中回顾了这个问题,没有投票,但我有一个解释:许多人会认为这太简单了,应该在StackOverflow上有一个问题。 – Alexei

回答

6

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

变化

int function() 

double function() 
+0

苦,谢谢! – Tom

1

iharob的答案当然是正确的,但我认为这也很重要在未来知道如何避免这种错误。

我也没有发现这种行为的任何显式引用(从“大”数字类型隐式转换为“较小”的),所以我已经询问question这个。

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

但是,这种行为是有意设计的,正如Chris在评论中提到的那样,有时它在性能方面也是might be useful

+0

谢谢!这非常有帮助 – Tom