我必须将摄氏温度转换为华氏温度。然而,当我以摄氏度打印温度时,我得到了错误的答案!请帮忙 ! (公式是c =(5/9)*(f -32)。当我输入1表示华氏度时,我得到c = -0.0。我不知道出了什么问题:s
这是代码
import java.io.*; // import/output class
public class FtoC { // Calculates the temperature in Celcius
public static void main (String[]args) //The main class
{
InputStreamReader isr = new InputStreamReader(System.in); // Gets user input
BufferedReader br = new BufferedReader(isr); // manipulates user input
String input = ""; // Holds the user input
double f = 0; // Holds the degrees in Fahrenheit
double c = 0; // Holds the degrees in Celcius
System.out.println("This program will convert the temperature from degrees Celcius to Fahrenheit.");
System.out.println("Please enter the temperature in Fahrenheit: ");
try {
input = br.readLine(); // Gets the users input
f = Double.parseDouble(input); // Converts input to a number
}
catch (IOException ex)
{
ex.printStackTrace();
}
c = ((f-32) * (5/9));// Calculates the degrees in Celcius
System.out.println(c);
}
}
答案 0 :(得分:4)
您正在进行整数除法,因此5 / 9
将为您提供0
。
将其更改为浮点除法: -
c = ((f-32) * (5.0/9));
或者,首先执行乘法(从分区中删除括号): -
c = (f-32) * 5 / 9;
因为,f
是双倍的。分子仅为double
。我认为这种方式更好。
答案 1 :(得分:0)
你应该尝试使用double而不是int,因为这会导致精度损失。而不是使用整个公式,一次使用一个计算
示例:使用适当的铸件 加倍= 5/9
F - 双32
答案 2 :(得分:0)
使用这个:
c = (int) ((f-32) * (5.0/9));// Calculates the degrees in Celcius
因为它涉及分裂,你不应该只使用整数来获得适当的分裂
答案 3 :(得分:0)
使用此
System.out.println((5F / 9F) * (f - 32F));
答案 4 :(得分:0)
除非另有明确说明,否则Java会将所有数字视为整数。由于整数不能存储数字的小数部分,因此在执行整数除法时,将丢弃余数。因此:5/9 == 0
Rohit的解决方案c = (f-32) * 5 / 9;
可能是最干净的(尽管缺乏明确的类型可能会引起一些混乱)。