2015-01-21 3 views
1

이 코드는 내가 사용하고있는 코드의 일부입니다. 잘못된 답변으로 인해 일부 논리적 오류를 수정하는 것부터 시작했습니다. 내가 같이 fToC를 선언 할 필요를 제외하고 최대 컴파일러 마무리하지 것뿐만 아니라 구문 오류의 몇 ... 난,자바 왜 나에게 "0"을주는거야?

//declaration statements 
final int BOILING_IN_F = 212; 
int fToC; 
string output; 

//there is other code between that has nothing 
//to do with outputting the boiling point. 

fToC = (5/9) * (BOILING_IN_F - 32); 
output = BOILING_IN_F + " in Fahrenheit is " + fToC 
      + " in Celsius."; 
System.out.println(output); //this is outputting 0 for fToC 
System.out.println(); 

답변이 유용했다 ... fToC은 "0"가 계속 발견 프로그램을 컴파일하고 실행하기 전에 double을 사용하십시오. 고맙습니다.

+0

고맙습니다. 나는 그런 느낌이 들었습니다. 지난 학기에 배운 파이썬을 섞어서 공식을 바꿀 때. 나는 도움을 주셔서 감사합니다. 나는 이것을 보지 못해 혼잣말을합니다. 그러나 인생은 계속됩니다. – Duffman

+0

fToC를 double로 선언해야한다는 것을 알았습니다. 필자가 본문을 읽은 후, 자바가 데이터의 손실 가능성 때문에 int에 대한 이중화를 허용하지 않는다는 것을 알아 냈다. – Duffman

답변

1

(5/9)은 int 나눗셈으로 인해 0입니다. 전체 표현해야 (5.0/9)

보십시오 :

fToC = (5.0/9) * (BOILING_IN_F - 32); 
2

을 당신은 다른 정수 초래한다 5/9, 자바의 정수 나눗셈을 수행 - 0, 결과가 0 그래서. 부동 소수점 연산을 수행하려면 double 리터럴을 사용하십시오.

fToC = (5.0/9.0) * (BOILING_IN_F - 32); 

당신은 double (그리고 String output로 오타 string output 변경)을 할 fToC이 필요합니다.

+0

int fToC를 fToC를 두 배로 변경하는 것이 더 좋지 않습니까? –

+0

@AngeloAlvisi Correct; 업데이트되었습니다. – rgettman

1

(5/9) 당신은 두 개의 정수를 다이빙합니다. 따라서이 값은 잘립니다. 따라서 0이 다른 숫자와 곱해집니다.

(5.0f/9.0f)을 사용하여 귀하의 전화 번호가 실제로 십진수임을 정확하게 확인하십시오.

관련 문제