2016-12-23 1 views
0

내 프로젝트에서 백분율을 계산하고 그 중 두 배를 사용하고 있습니다. 나에게 정확한 데이터 유형을 제안하여 백분율을 소수점 이하로 계산하십시오. 5.368의 18 %는 정확히 0.966을 제공해야합니다.십진수 비율을 계산하는 데 올바른 데이터 유형이 두 배입니까?

결과를 소수점 이하 3 자리로 자르고 싶습니다.

것은 나는 이것을 사용하고 있습니다 :

EditText kundan = (EditText) findViewById(R.id.kundan); 
double kundangiven = Double.parseDouble(kundan.getText().toString()); 
EditText loss = (EditText)findViewById(R.id.losspercentage); 
double lossinkundan = Double.parseDouble(loss.getText().toString()); 
losspercent = (lossinkundan * kundangiven)/100 ; 
losspercent = losspercent % 10 ; 
displayTotalloss(losspercent); 
+0

도움이 될만한가요? (http://stackoverflow.com/questions/27598078/float-and-double-datatype-in-java) Double, btw, 올바른 유형입니다. imho –

+0

코드가 정확히 작동하지 않습니다. –

+0

결과 부분 내가 원하는 분수 부분 0.000 –

답변

1

원래 코드는 두 배의 저장 비율 계산에 대해 잘 작동합니다. 결과를 소수 자릿수 3 자리로 지정하는 것과 관련하여 String.format()을 사용하십시오. 더 나은 당신의 요구를 이해 이제

String.format("%.3f", losspercent); 
+0

십진수는 숫자입니다. 십진수 *를 의미합니까 *? – EJP

+0

정수는 아니지만 찍은 숫자를 의미했습니다. –

+0

그것은 나에게 결과를주지 않았다 ... 나는 내가 제대로 코딩 할 수없는 간단한 십진수 나누기를 생각한다. 나는 예제를 주었다. 5.368은 0.966을 주어야한다. –

2

,이 표시 정밀도의 double 3 자리를 얻을 수있는 방법입니다

String.format("%.3f", losspercent);

이는 String를 반환, 그래서 그것을 반환 할 수 있습니다 함수에서 직접 전달되거나 유형 변수에 저장됩니다. String

올바른 데이터 유형을 사용하여 저장하고 있는지 묻는 것처럼 들립니다 귀하의 계산 된 백분율, 또는 더 나은 옵션이 있는지 여부.

현재 코드 구조가 주어지면 나는 그렇습니다. double은 올바른 선택입니다. 정수가 아닌 숫자를 나눌 때 (또는 그 배수를 곱하면) 정확한 결과가 입력보다 출력의 정밀도가 더 높아야 할 가능성이 큽니다. 여기서 float 대신 double을 사용하는 메모리 비용은 무시해도 좋을 것이므로 double이 분명한 선택처럼 보입니다.

정확성에 대해 정말로 우려하고 있다면 BigDecimal을 사용할 수 있습니다. BigDecimal은 기본 함수가 아니기 때문에 메모리와 처리에 더 많은 비용이 듭니다. (이 예제에서는 아직 눈에 띄지 않을지라도).

물론 "올바른"데이터 형식을 사용하고 코드 기반을 제어 할 수 있다면 자신 만의 데이터 형식을 만들 수 있습니다. 그래도 여기서는 불필요하다고 생각합니다. double은 완벽하게 적합합니다. 가독성을 염려하는 경우 double xint p을 사용하는 을 나타내는 double을 x으로 반환하는 함수를 만드는 것이 좋습니다.

관련 문제