마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안녕하세요 자릿수 formating 질문드립니다.

0 추천

제가 전에,

1)

 0.5, 1, 10, 9, 4000

 뭐 이런 숫자의 경우는 그냥 저렇게 딱 값이 나왔으면 좋겠고,

 2)

 1.546875138123453 , 3.123459783 ,3543.124135435

 뭐 이런경우엔, 소수 여섯째짜리까지만 나왔으면 좋겠고.

 3)

 1.1234567123456E3, 1234,234568737E7 뭐 이럴경우에는.. 소수 여섯째자리 수 까지만 나오고 지수형태로 표현하고 싶어요. 1.123456E3 , 1234,234568E7 이렇게요..

 

이렇게 질문을 올렸는데,

split 으로 .<<-  을 구분자로해서 .뒤에 길이가 6자리이상이면 substr로 6자리만 보여주게하고 만약 그 .뒤에 문자가있으면 지수나오게 해주면될거같은데요?

 

이런 답변을 받았습니다.

그래서 코딩을 해봤는데 오류가나서요ㅠㅠ

 

 

String result = String.format("%f", V);
String[] result1 = result.split(".");

if(result1[1].length()>=1 && result1[2].length() == 0) {
    textView4.setText("V = " + result1[1] +V1);
}else if(result1[1].length()>=1 && result1[2].length()<5){
    if(result1[2].contains("E")){
        String[] resultV = result.split("E");
        textView4.setText("V = " + result1[1] + "." + result1[2] + "E" + resultV + V1);
    }else{
        textView4.setText("V = " + result1[1] + "." + result1[2] + V1);
    }

}else if(result1[1].length()>=1 && result1[2].length()>5){
    if(result1[2].contains("E")){
        String result2 = result1[2].substring(0,3);
        String[] resultV = result.split("E");
        textView4.setText("V = " + result1[1] + "." + result2 + "E" + resultV + V1);
    }else{
        String result2 = result1[2].substring(0,3);
        textView4.setText("V = " + result1[1] + "." + result2 + V1);
    }

}

 

01-25 15:43:30.408 20444-20444/? E/Zygote: MountEmulatedStorage()
01-25 15:43:30.408 20444-20444/? E/Zygote: v2
01-25 15:43:30.408 20444-20444/? I/libpersona: KNOX_SDCARD checking this for 10268
01-25 15:43:30.408 20444-20444/? I/libpersona: KNOX_SDCARD not a persona
01-25 15:43:30.418 20444-20444/? I/SELinux: Function: selinux_compare_spd_ram, SPD-policy is existed. and_ver=SEPF_SHV-E330K_4.4.2 ver=32
01-25 15:43:30.418 20444-20444/? I/SELinux: Function: selinux_compare_spd_ram , priority [2] , priority version is VE=SEPF_SHV-E330K_5.0.1-1_0032
01-25 15:43:30.418 20444-20444/? E/SELinux: [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL

 

후니02 (820 포인트) 님이 2016년 1월 25일 질문
후니02님이 2016년 1월 25일 수정
result1[1] <= 이상하죠?
뭐가 이상한거에요? 저렇게 하는게 아니에요?
실수인가 해서 저렇게 답드렸는데 실수가 아닌가 보군요~~!
자바배열 인덱스는 0부터 시작합니다.
아 네.. 수정하고 확인해봤는데 같은 오류가 뜨는데 왜그럴까요ㅠㅠ 코딩엔 이상이 없나요?
문제 자체는 많아요~~! 하나하나 다 답해 줄수 없을 정도로...
result1[2].length() == 0이부분도 말이 안되고요!
자바 공부를 좀더 하심이 나아 보입니다.
제가 꼬집은것에 대한 답을 드리자면 길이가 0이면 result1[2]는 null 입니다.
널값의 길이를 물으니 당연히 오류가 나겠죠~~!
그렇군요ㅠ_ㅠ.. 답변 감사합니다.
그런데 문제 자체가.. 소수점자리의 길이로 구문을 나누는거거든요..
이럴 경우엔 어떻게 해야하는지 모르겠네요
indexOf 로 해당 지수 찾아내서 몇번째 위치에 해당하는지 알아난다음 substr 로 해당위치 +1 까지 해서 지수부분 잘라서 출력하게 하면될거같은데.. 한번 고민좀해보셔야할거같네요

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...