这是在C ++中,我的程序将Celsius转换为Fahrenheit时出现问题。
我遇到问题的一条线是我的转换公式线:
fahrenheitTemp = (9 / 5) * celsiusTemp + 32
当我用1.8
代替9 / 5
时,等式/程序工作正常但由于某种原因,9 / 5
永远不会乘以celsiusTemp
。它始终只返回celsiusTemp + 32
的值。
程序的其余部分很好,只是9 / 5
没有做任何事情,我甚至尝试了所有不同类型的组合括号等。
答案 0 :(得分:8)
您的问题在于您使用整数除法而不是浮点除法。这个表达式:
9 / 5
评估为:
1
因为它会丢弃0.8
个剩余部分。如果要使用浮点除法,则需要确保一个或两个操作数都是浮点类型:
fahrenheitTemp = (9.0 / 5.0) * celsiusTemp + 32;
如果farenheitTemp
是int
,您还需要在之后转回int
。
fahrenheitTemp = static_cast<int>((9.0 / 5.0) * celsiusTemp + 32);
答案 1 :(得分:2)
默认情况下,像5
或(9.0/5.0)
这样的整个值将被解释为整数,没有小数部分。有几种方法可以解决这个问题:
((double)9/5)
暗示这是一个浮动值import java.io.*;
interface MyIOAction
{
void ioAction(Reader rdr) throws IOException;
}
class MyClass
{
public static void main(String args[]) throws IOException
{
Reader rdr1;
int read = rdr1.read(); //Statement 1
MyIOAction myIO = (rdr2) ->
{
int ch = rdr2.read(); //Statement 2
};
}
}
将9作为双重投射并将5推广为相同。