2014-08-27 3 views
-1

컨텍스트 : 01 사이의 decimal을 기반으로 점수를주는 게임을 만들고 있습니다. 대답은 항상 내가이 경우 이유를 이해하지 않습니다 below (10)Android 수학 : 왜 합계가 1.0을 반환합니까?

해야으로 equation에서

내가 예기치 않은 대답 1.0을 얻고 아래에 표시?

합계 :

double decScore= 1- ((turns-minPossible)/(maxPossible-minPossible)); 

Sample Data

turns=20; 
minPossible=8; 
maxPossible=120; 

을 입력되는

내가 기대하고 대답은 변수가 켜지면, 최소 및 최대는 정수 다음이 정수 부문은 0.89

+0

이것은 '0'을 뺄셈하는 빼기에서 반올림 문제라고 생각합니다. 관련된 변수의 유형은 무엇입니까? – Codor

+1

-1 isofopic :'디버깅 도움을 구하는 질문 ("이 코드가 작동하지 않는 이유는 무엇입니까?")에는 원하는 동작, 특정 문제 또는 오류 및 질문 자체에서이를 재현하는 데 필요한 가장 짧은 코드가 포함되어야합니다. 분명한 문제 설명이없는 질문은 다른 독자에게 유용하지 않습니다. See : 최소한의 완전하고 검증 가능한 예제를 만드는 법'...이 코드는 예상대로 작동합니다 : http : //ideone.com/3rtkcD – Selvin

+0

ideone.com에 감사드립니다. – user3968848

답변

3

결과는 1.0이므로 결과는 1.0입니다.

두 배로 캐스팅해야하기 때문에 int가 아닌 double의 정밀도로 계산됩니다.

double decScore= 1 - (((double)turns-minPossible)/((double)maxPossible-minPossible)); 

또는 단순히 그들이 처음에 더블로 선언 있습니다

double turns=20.0; 
double minPossible=8.0; 
double maxPossible=120.0; 
+0

감사합니다. – user3968848

0

입니다 12/112 = 0

두배로하거나 문자를 넣으십시오.

0

회전, minPossible 및 maxPossible의 유형은 무엇입니까? 그들이 INT 경우에, 당신은 정수 나누기를 적용하고 난 당신이 회전을 변경해야합니다 생각 그들에게

(float)(turns-minPossible)/(float)(maxPossible-minPossible)); 
0

캐스팅해야/minPossible/maxPossible 더블, 귀하의 예제는 그 정수 오른쪽을 입력하는 방법?