2013-07-09 10 views
1

를 인쇄하는 동안 정밀도를 잃는 :아래의 코드를 살펴 제발 플로트

float num = 72000000.69f; 
    System.out.println(String.format("%.2f", num)); 

출력 : 내가 정밀도를 잃어버린하고 72000000.00

. 부동 소수점 형으로 변환하여 값을 인쇄하려고 시도했지만 도움이되지 않습니다.

정밀도를 유지하는 방법은 없습니까?

답변

5

부동 소수점에는 7 자리의 정밀도가 있습니다. 너는 7 자리 숫자가있어.

정밀도를 높이려면 double을 대신 사용하십시오.

+0

안녕하세요. 이 정보를 어디에서 얻었습니까? 7 자리 숫자의 정밀도가 있습니까? 링크를 공유 할 수 있습니까? – Ayushi

+0

안녕하세요, 위키에 있습니다. 감사. – Ayushi

+0

http://www.homeandlearn.co.uk/java/short_float_variables.html – Curt

2
BigDecimal num = new BigDecimal("72000000.69"); 
System.out.println(num); 

출력 :

72000000.69 
0

사용 BigDecimal를, 부동 유형이 테스트를 시도

+0

문제는이 값을 부동 값으로 보내는 다른 응용 프로그램에서 가져 오는 것입니다. 데이터 유형을 지금 변경할 수있는 특권이 없습니다. 그러나 다른 옵션이 없다고 확신 할 경우이를 상위 업체에게 알릴 수 있습니다. – Ayushi

0

생각하는 방식을 모든 전화 번호를 저장하지 않는

System.out.println(72000000.69f == 72000000f); 

그것을 인쇄

true 

이것은 float의 낮은 정밀도로 인해 .69가 단순히 끊어지는 것을 의미하며, 단순히 거기에 없기 때문에 어떤 방식 으로든 복원 할 수 없습니다.