생성자에 이상한 문제가 있습니다. 측정 된 매개 변수를 나타내는 "Training"클래스를 작성했습니다 . 8 명 중 5 명은 직접 초기화되는 반면 나머지는 값이 할당되기 전에 간단한 계산을 수행해야합니다. 내 문제는이 3 개의 부동 변수가 객체가 생성 된 후 0을 포함한다는 것입니다. 나는 무엇이 잘못되었는지 전혀 모른다.
public class Training {
int hr1;
int hr2;
int hr3;
int hr4;
String date;
float wsr; //problem
float hrDec1; //problem
float hrDec5; //problem
public Training(int hr1, int hr2, int hr3, int hr4, String date) {
this.hr1 = hr1;
this.hr2 = hr2;
this.hr3 = hr3;
this.hr4 = hr4;
this.date = date;
this.wsr = ( (hr2 - hr4) / (hr2 - hr1) ) * 100.0f; //problem
this.hrDec1 = ( (hr2 - hr3) / hr2 ) * 100.0f; //problem
this.hrDec5 = ( (hr2 - hr4) / hr2 ) * 100.0f; //problem
}
public String toString(){
return date+" | WSR: "+wsr +", HRdec1: "+hrDec1 +", HRdec5: "+ hrDec5;
}
}
새 개체를 인쇄 한 후 예.
Training t = new Training(90, 190, 130, 110, "15.08.2015");
System.out.println(t);
나는받을 것이다 :
15.08.2015 | WSR: 0.0, HRdec1: 0.0, HRdec5: 0.0
부동 값은 0을 포함합니다. 이유는 무엇입니까? 미리 감사드립니다!
플로트 값에 대한 귀하의 계산 값의 정수를 사용 hr1
, hr2
, hr3
와 hr4
. Java에서 정수 나눗셈의 결과도 정수입니다.
따라서 정수가 아닌 숫자가 나오는 나눗셈을 수행하면 java가 반올림합니다.
귀하의 경우 계산은 정수 나눗셈이기 때문에 먼저 0으로 내림되며 피제수와 제수는 모두 정수입니다.
float divison을 적용하려면 값 중 하나를 float로 바꾸면됩니다. 예를 들어 float (이 경우 100.0f)로 변경하면됩니다.
this.wsr = ((hr2 - hr4) * 100.0f)/ (hr2 - hr1);
this.hrDec1 = ((hr2 - hr3) * 100.0f) / hr2;
this.hrDec5 = ((hr2 - hr4) * 100.0f) / hr2;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다