double 返回时四舍五入
double gets rounded when returned
我如何 return 加倍而不得到 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
我在这里错过了什么?
你的函数 returns ٰint
它必须 return double
改变
int function()
到
double function()
iharob
的回答当然是正确的,但我认为知道以后如何避免这种错误也很重要。
我也没有找到任何关于此行为的明确引用(从 "large" 数字类型隐式转换为 "smaller" 类型),所以我问了 关于这个。
简而言之,通过提供正确的编译警告标志,可以在编译时发现这些错误(例如 -Wconversion
),因为它几乎总是错误。
但是,这种行为是设计使然,正如 Chris 在评论中提到的那样,有时它 might be useful 在性能方面。
我如何 return 加倍而不得到 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
我在这里错过了什么?
你的函数 returns ٰint
它必须 return double
改变
int function()
到
double function()
iharob
的回答当然是正确的,但我认为知道以后如何避免这种错误也很重要。
我也没有找到任何关于此行为的明确引用(从 "large" 数字类型隐式转换为 "smaller" 类型),所以我问了
简而言之,通过提供正确的编译警告标志,可以在编译时发现这些错误(例如 -Wconversion
),因为它几乎总是错误。
但是,这种行为是设计使然,正如 Chris 在评论中提到的那样,有时它 might be useful 在性能方面。