0의

2013-03-10 13 views
-1

내가 장치에서 오는 데이터에서 플로트로 16 진수 문자열로 변환하기 위해 노력하고있어 :0의

LCD 디스플레이의 장치 출력,

0x00ac와 해당 플로트 값 5.06

값을 산출 한 방법은 다음

final byte[] temp = new byte[1]; 
temp[0] = ba[0]; 
float fff = hexToFloat(bytesToHex(temp)).floatValue(); 
final float ff = (fff/42) * 1000; 
String floatString = Float.toString(ff); 

단 플로트 문자열 출력 문자열에 "E-"표기법이 있습니다. 나는 이것을 제거해야한다. 또한 ff의 값은 LCD의 장치 출력과 약간 다릅니다.

+2

어떻게'0x00ac' 플로트'5.06'입니까? – poitroae

+0

바이트 값을 16 진수로 변환하고 부동 소수점으로 변환하기 만하면됩니다. 질문은 값에 관한 것이 아니라 부동 소수점 표현에 대한 문자열로서' –

+0

제목에 "leading zero 's"가 없다고 확신 하시겠습니까? –

답변

3

여기 0x00ac은 5.06로 동일 할 수있는 방법을 볼 수 있지만하지 않는이 BigDecimal를 가진 과학적 표기법으로 제거하는 방법입니다 :

BigDecimal num = new BigDecimal(fltInput); 
String numWithNoExponents = num.toPlainString() 
+0

예 : "5.605E-42"BigDecimal 변환을 수행하면 "E-42"를 제거해야합니다. 값은 0.00 ... 5605 (0이 많이 있음) – xybrek

+0

"5.6054- 42 "는"5.605 "또는"5.60 "으로 만들 필요가 있습니다 – xybrek

+0

'E-42'는 부동 소수점 값의 매우 중요한 부분처럼 보입니다 ... 그리고 '5.60'은 귀하의 질문에서'5.06'과 동일하지 않습니다 . –