문제

그래서 저는 현재 아주 간단한 프로그램을 만들고 있습니다.이것이 하는 일은 화씨 또는 섭씨를 켈빈으로 변환한 다음 사용자가 요청하는 것(f 또는 c)에 따라 켈빈 값이 변환되어 섭씨 또는 화씨로 반환되는 것입니다.

섭씨 변환은 잘 작동하는 것 같지만 화씨 변환은 다른 이야기입니다.우리 교수님은 우리의 출력이 주어진 예와 100% 일치해야 하며 섭씨 값을 제공하고 섭씨를 다시 요청하면 항상 원래 입력한 값을 반환한다고 말씀하셨습니다.

그러나 섭씨 95도를 화씨로 변환하면 다음과 같은 결과를 얻을 수 있습니다.203.28800000000007 내가 얻은 가치는 다음과 같습니다.203.0 또한, 내가 50 화씨를 넣고 화씨 반환을 요청했을 때, 나는 이것을 얻었다.32.0.

모든 변환 방법이 포함된 클래스를 게시하겠습니다. 하지만 내가 잘못될 수 있는 부분에 대해 누구든지 도움을 줄 수 있습니까?내 수식을 기반으로 한 것처럼 보이는데, 이는 단순히 32를 더하거나 빼는 수식의 일부를 반환하는 것입니다.수식의 다른 형식을 시도했지만 아무 것도 작동하지 않는 것 같습니다.

public class Temperature 

{

// Instance variable

   private double degreesKelvin; // degrees in Kelvin

// Constructor method: initialize degreesKelvin to zero

   public Temperature() 
   {
      degreesKelvin = 0;
   }

// Convert and save degreesCelius in the Kelvin scale

   public void setCelsius(double degreesCelsius) 
   {
      degreesKelvin = degreesCelsius + 273.16;
   }

// Convert degreesKelvin to Celsius and return the value

   public double getCelsius() 
   {
      double c = degreesKelvin - 273.16;
      return c;
   }

// Convert and save degreesFahrenheit in the Kelvin scale

   public void setFahrenheit(double degreesFahrenheit) 
   {
      degreesKelvin = (5/9 * (degreesFahrenheit - 32) + 273);
   }

// Convert degreesKelvin to Fahrenheit and return the value

   public double getFahrenheit() 
   {
      double f = (((degreesKelvin - 273) * 9/5) + 32);
      return f;
   }

}

도움을 주셔서 감사합니다. 이 문제에 대한 해결책을 찾으려고 노력했지만 지금까지는 아무 것도 효과가 없는 것 같습니다.

도움이 되었습니까?

해결책

정수 나누기에 주의하세요. 2개의 정수(나누면)의 결과는 정수가 됩니다.

5/9 = 0
9/5 = 1

이 문제를 해결하려면 다음과 같이 그 중 하나를 부동 유형으로 캐스팅하세요.

5d/9 //or 5.0/9

그리고 마찬가지로

9d/5 //or 9.0/5

다른 팁

저장하는 동안 섭씨 273.16도를 추가하기 때문에 문제가 발생합니다.추가 .16으로 인해 이 오류가 발생합니다.섭씨 95도의 경우

켈빈도 = 273.16+95

이제 돌아 오는 동안

5/9*(273.16+95-273) +32 == 5/9(95.16)+32 == 203.2

~하는 동안

5/9*(273+95-273) + 32 == 203

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top