2012-06-09 2 views
0

좋아, 그래서 제가 테스트 프로그램을 가지고 :유효한 숫자를 파싱 한 후 휴지통을 가져 오는 중입니까?

public class ParseTest { 
    public static void main(String[] args){ 
     String s = "-0.000051"; 
     System.out.println(s + " != " + Float.parseFloat(s)); 
    } 
} 

을하며 밖으로 양쪽에 같은 번호를 넣어 아니에요. 이것은 출력입니다 :

-0.000051 != -5.1E-5 

그럼 왜 양쪽에 같은 번호를 출력하지 않습니까?

+1

캡슐화 이것이 new FloatingDecimal(f).toJavaFormatString(); * 호출 Float.toString() 호출 호출 같은 번호 야, 친구. 하나는 10 진수, 다른 하나는 지수입니다 : 두 표기법 모두 같은 값을 나타냅니다! 귀하의 "println()"은 암시 적으로 "Float.toString()"을 수행하고 있습니다. 다른 표기법을 원하면 "String.format()"을보십시오. EX : String.format ("% .2f", floatValue); – paulsm4

답변

2

그것은이 같은 수의 단지 different scientific representation,

예를 들어

:

100 = 1E2 

0.1 = 1E-1 

어떻게 같은 표현을 얻을?

는이 형식으로 변환 누가 BigDecimal

System.out.println(s + " != " + new BigDecimal(s)); 

같은 표현은 다음 사용하려면? 당신이로 String으로 원시적 변환

예를 들어

float f = 100.123; 
String result = "" + f; 

이 inturns Float.valueOf(f)가 어떤 inturn는 IT가 * 인이 물건은

+0

왜 표현이 바뀌 었습니까? – CyanPrime

+0

@CyanPrime 그렇지 않았습니다. _ 같은 _ 번호입니다. [wiki의 과학적 표기법] (http://en.wikipedia.org/wiki/Scientific_notation)을 참조하십시오. –

+0

알았어, 고마워. 가능한 한 빨리 받아 들일 것입니다. – CyanPrime

관련 문제