2011-02-18 3 views
0

어떻게 float에 저장할 수있는 최대 두 자리 정밀도 vale를 찾을 수 있습니까?최대 값은 2 자리 정밀도 (2 자리 정확도)로 Java float에 저장할 수 있습니까?

제 생각에 32 비트 부동 소수점에는 지수를 제외한 수를 저장하기위한 24 (23 + 1) 개가 있습니다. 2^24는 저장할 수있는 최대 값입니까?

미리 감사드립니다. Sriraman

+1

'float'의 한계는'Float.MIN_VALUE'와'Float.MAX_VALUE'에 의해 주어집니다. "2 진수 정밀도"는 무엇을 의미합니까? –

+1

float에 금전적 가치를 저장하려고 생각하는 경우 (2 자리 소수점은 내가 올 곳) 다시 생각하고 float 또는 double보다 적합한 데이터 유형을 사용하십시오. –

답변

2

2^24는 정확하게 저장할 수있는 가장 큰 정수입니다. 정밀도를 잃지 않고 저장할 수있는 소수점 이하 두 자리까지의 값입니다. 2^24/100.

참고 : 심지어 0.1 & 0.01도 정확하게 저장할 수 없지만 반올림하여 오류없이이 값을 얻을 수 있습니다. 따라서 질문을 문자 그대로 취하면 가장 큰 값은 0.00입니다. ;)

두 자릿수의 정밀도를 갖는 가장 큰 값은 Float.MAX_VALUE에 가깝지만, 이것이 사용자의 의도라고 생각하지 않습니다. 는 IEEE 754 단 정밀도 이진 부동 소수점 형식에

+0

아니요, '0.25'를 저장할 수 있습니다 (및 많은 다른 값들)이 완벽하게 'float'이므로, '0.00'은 최대 값이 아닙니다. –

+0

'Float.MAX_VALUE'도 정확하게 저장할 수 있습니다. 대답뿐만 아니라 질문을 추측해야하는 위험이 있습니다. 그것의 해석의 문제. 가장 흥미로운 대답은 정확한 오류없이 0.01을 더할 수있는 가장 큰 값입니다. 즉 소수점 두 자리가 필요한 경우 float에 안전하게 저장할 수있는 값의 범위는 무엇입니까? –

+0

@ Joachim Sauer : 원래의 질문은 "최대 값"은 0부터이 최대 값까지 모든 값 (십진 정밀도 2)을 의미합니다. 따라서 0.0이 정답입니다. – Robert

0

정보 나 같은 번호를 찾을 가능성이 없다고 생각 wikipedia

에서 찾을 수 있습니다. 2 진수 십진수 자리가 10 진수로되어 있지만이 숫자를 이진수로 저장하려고합니다.

32 비트 부동 소수점에 1.00의 정확한 값을 저장할 수는 있지만 0.99를 저장할 수는 없습니다.

0

정밀도는 부동 소수점 값으로 지정할 수 없습니다. 소수 자릿수 2 자로 제한하면 다른 대가로 더 많은 공간을 확보 할 수 없습니다.

0

포인트 뒤에 정확히 두 자릿수의 숫자 만 저장하려면 숫자를 정수로 100 배 (또는 숫자의 크기에 따라 길어짐) 저장하고 포인트 (또는 쉼표)를 형식 지정 (구문 분석시 제거).

제어하기가 훨씬 쉽습니다.

관련 문제