2013-04-20 1 views
0

도와주세요. double 같은 것을 사용할 때 잘못된 계산에 문제가 있습니다. 예를 들어 다음 코드를 사용합니다.Android : 잘못된 계산 형 더블

double a = 2.01; 
double b = 1.01; 
double c = 100*(a - (int)a); 
double d = 100*(b-(int)b); 

내 기록에는 다음과 같습니다. c = 1.0000001 및 d = 0.99999987. 계산이 더 정확한 결과, 즉 0.01이되도록하는 방법? 도움에 미리 감사드립니다.

+1

확인이 다른 질문이 특정 답 : http://stackoverflow.com/a/3596122/2206688 –

답변

0

int 캐스팅 대신 Math.round(num)을 사용하십시오.

+0

근본적인 문제가 해결되지 않습니다. 게다가'a'''''' 2.51''은 긍정적 인 것 대신에 음수를 산출 할 것입니다. 이것은 OP가 원하는 것 같지 않습니다. – jerry

0

두 배가 2 진수이며 정밀도가 제한적이라는 문제가 있습니다. 정확히 2.01 또는 1.01 (또는 almost all 실수)을 정확하게 나타낼 수 없습니다. 이것은 그들이 쓸모가 없다는 것을 의미하지 않으며, 종종 우리는 이와 같은 작은 차이에 대해 신경 쓰지 않습니다. 그렇게하면 고정 점이나 BigDecimal과 같은 다른 것을 사용해야 할 것입니다.

0

글쎄, 컴퓨터는 우리와 같은 숫자를 생각하거나 저장하지 않습니다. 부동 소수점 숫자를 컴퓨터에 저장하고 액세스하는 데는 여러 가지 방법이 있습니다. 기본적으로 부동 소수점 숫자는 근사치입니다.

https://en.wikipedia.org/wiki/Numerical_analysis