2013-04-17 6 views
3

많은 Android 기기에서 제대로 작동하는 앱이 있지만 PlayBook에서 실행중인 BlackBerry Android 플레이어 (Android 2.3을 실행 함)에 문제가 있습니다.BlackBerry Android 플레이어에서 이상한 플로트 출력

PreferenceManager.getDefaultSharedPreferences()에서 NumberFormatException이 발생했습니다. 환경 설정 파일에서 float는 "@ .0E-12"로 저장되었습니다. 이 간단한 테스트를 만들었습니다 :

float f = 1.0e-12f; 
System.out.println (f); // prints "@.0E-12" on BlackBerry PlayBook !! 

어떻게 될 수 있습니까?

+0

어쩌면 검은 딸기가 변환에 돌입니다. 수레가 작동하는지 확인하기 위해 수레 대신 BigDecimal을 사용할 수 있습니까? –

+0

내 컴퓨터에 "1.0E-12 '가 출력됩니다. – BlackJoker

+0

'System.out.println (new Float (f) .toString())'을 시도해보십시오. 버그 인 경우 해당 클래스에있을 가능성이 큽니다 – 18446744073709551615

답변

0

매우 적은 수 (즉, 0.000000.01)입니다.
당신에게 아무런 의미가 없다면 시도해 볼 수 있습니다 BigDecimal.
그렇지 않으면 x보다 작은 숫자 (x가 얼마나 작은 지 결정)를 결정할 수 있습니다.

+0

SharedPreferences에서 Android 설정을 저장하려면 float (BigDecimal이 아닌)을 사용해야합니다. – Patrick

0

질문이 인 경우 어떻게 할 수 있습니까?, 당신은 안드로이드 소스를 다운로드 할 수 있다고 생각합니다 libcore/luni/src/main/java/java/lang에서 관련 소스를 찾고, Float.toString()에서 시작하여 함수별로 함수를 프로젝트로 가져 오기 시작합니다. 버그가 여전히 표시 될 때마다 확인합니다. 버그를 찾아 낼 것입니다, 그것은 아마도 FP 수학과 관련이 있습니다. (아마, 가수의 가장 중요한 부분에서 무작위 비트와 같은 것입니다.)

+0

이것은 안드로이드 (모든 에뮬레이터에서 작동)에는 문제가되지 않지만 PlayBook 안드로이드 플레이어에서만 가능합니다. – Patrick

+0

나는 당신이 찾을 수 있다는 것을 의미합니다. PlayBook 안드로이드 플레이어를 제외한 모든 플랫폼에서 작동하는 코드의 위치. 그런 다음 Java 버그 (대부분의 플랫폼에서 제대로 작동하지 않는 문서화되지 않은 무언가에 의존 할 수 있음) 또는 Java VM 버그 또는 그 파의 버그 ticular 하드웨어. 물론, 당신이 정말로 관심이 있다면 어떻게 될까요? _ – 18446744073709551615

+0

BlackBerry Android 소스 코드가 없습니다. – Patrick