double函数仅返回-0
double function only returning -0
我有两个函数,它们是我作为练习编写的一个较大函数的一部分。这些功能的目的是将温度从华氏度转换为摄氏度,反之亦然。
我从开始
#include <iostream>
using namespace std;
double Celsius_to_Fahrenheit(double);
double Fahrenheit_to_Celsius(double);
摄氏度到华氏度运行良好:
double Celsius_to_Fahrenheit(double C){
double F = ((9 / 5)*C + 32);
return F;
}
但是华氏度到摄氏度函数无论采用什么参数都会返回-0
:
double Fahrenheit_to_Celsius(double F){
double C = ((5 / 9)*(F - 32));
return C;
}
第二个怎么了?我看不出任何结构上的差异会导致一个工作而另一个不工作。
edit:我只在0
上测试了函数,两个函数都因非平凡的参数而中断!更糟糕的是!
实际上我认为这两个函数都失败了。你只是没有注意到C-to-F失败,因为你得到了一个非零的结果。
在C++中,除法的结果类型取决于操作数的类型,而不是最准确地表示结果的类型。换句话说,5/9是整数除法,并且将被截断为0。如果你使用5.0/9.0之类的东西,它会以双倍精度计算,很可能会给你一个你想要的结果。
但是,如果您对截断的结果感到满意,您可以重新排列术语,使其尽可能晚地进行舍入:double C = ((F - 32) * 5 / 9);
相关文章:
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 接收和返回函数指针的函数指针的类型?
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- C++函数链返回函数
- 返回函数指针的函数的签名
- 由于值返回函数中的错误,程序无法编译.它说未声明的标识符
- 非常量引用返回函数在常量值返回函数上用作 r 值
- 如何在 C++ 中从 void 返回函数访问变量
- 返回函数中带有 2 个可选 ctor 的对象
- 如何在 c++ 中返回函数的结构向量
- 返回 C++ 函数中的引用
- 使用向量时,当返回函数更改时,无法看到输出
- 如何在递归中使用返回函数
- 返回函数模板的类型C++作为第二个模板参数
- 为什么静态指针返回函数中有一个"静态"键?
- 递归返回函数,在特殊情况下不返回
- 从类返回函数
- 从类成员函数返回函数指针
- 从返回函数中推断不存在的模板参数