다음과 같이 코드 코드를 복사합니다.
/**
* RMB를 대문자로 변환
*
* @param 값
* @return 문자열
*/
공개 정적 문자열 hangeToBig(이중 값)
{
char[] hunit = { '十', '百', '千' } // 세그먼트 내 위치 표현
char[] vunit = { '10,000', '100million' } // 세그먼트 이름 표현
char[] 숫자 = {'0', '1', '2', '3', '4', '5', '루', 'Qi', '8', '9' } // 숫자 표현하다
long midVal = (long) (value * 100); // 정수로 변환
String valStr = String.valueOf(midVal); //문자열로 변환
String head = valStr.substring(0, valStr.length() - 2) // 정수 부분 가져오기
String Rail = valStr.substring(valStr.length() - 2) // 소수 부분을 취함
String prefix = ""; // 정수 부분 변환 결과
String suffix = ""; // 소수 부분 변환 결과
// 소수점 이하 숫자 처리
if (rail.equals("00"))
{ // 소수점이 0인 경우
접미사 = "전체";
}
또 다른
{
suffix = digit[rail.charAt(0) - '0'] + "angle" + digit[rail.charAt(1) - '0'] + "분" // 그렇지 않으면 각도 분을 변환합니다.
}
// 소수점 이하의 숫자를 처리한다
char[] chDig = head.toCharArray(); // 정수 부분을 문자 배열로 변환합니다.
char zero = '0'; // 플래그 '0'은 0이 발생했음을 나타냅니다.
byte zeroSerNum = 0; // 0이 연속으로 나타나는 횟수
for (int i = 0; i < chDig.length; i++)
{ // 각 숫자를 반복합니다.
int idx = (chDig.length - i - 1) % 4 // 세그먼트 내 위치를 가져옵니다.
int vidx = (chDig.length - i - 1) / 4 // 세그먼트 위치 가져오기;
if (chDig[i] == '0')
{ // 현재 문자가 0인 경우
zeroSerNum++; // 0번 연속 증가
if (제로 == '0')
{ // 깃발
0 = 숫자[0];
}
그렇지 않으면 (idx == 0 && vidx > 0 && zeroSerNum < 4)
{
접두사 += vunit[vidx - 1];
0 = '0';
}
계속하다;
}
zeroSerNum = 0; // 0회 연속 삭제
if (제로 != '0')
{ // 플래그가 0이 아닌 경우 예를 들어 수만, 수십억 등을 추가합니다.
접두사 += 0;
0 = '0';
}
prefix += digit[chDig[i] - '0'] // 디지털 표현을 변환합니다.
(idx > 0)인 경우
접두사 += hunit[idx - 1];
if (idx == 0 && vidx > 0)
{
prefix += vunit[vidx - 1]; // 세그먼트 이름은 세그먼트 끝에 추가되어야 합니다(예: 10,000, 10억)
}
}
if (prefix.length() > 0)
prefix += 'circle'; // 정수 부분이 있으면 Circle이라는 단어가 있습니다.
return 접두사 + 접미사 // 올바른 표현을 반환합니다.
}