큰 수를 콤마comma 수를 세어 미국 단위, 한국 단위로 읽는 건 힘들다. 그래서 그거 해 주는 함수 만든 거다.
인공 지능과 대화하면서 만든 코드이다. 인공 지능 정말 신기하다. 문법 오류도 아주 쉽게 잡고, 조금만 아이디어를 주면 바로 알아 듣고 고친다. 이러면 머리 굳은 노인 프로그래머들도 코딩하겠는데? 실력 없는 젊은 애들 직장에서 정말 잘리겠다.
Excel VBA 자료형에 따라 숫자의 정밀도가 차이가 나기 때문에, 들어 온 숫자를 정수 문자열로 바꾼 후에 1000단위 3개 문자, 10000단위 4개 문자로 구분해서 처리 하는 방식이다. 이렇게 하면 정밀도와 관계 없이 가장 큰 수도 처리할 수 있다. 아무리 큰 수를 넣어도 Excel에서 표현 가능한 크기의 숫자로 바꾸기 때문에 낮은 자리의 숫자들은 잘린다.
사람이 입력한 큰 수 → Excel 자료형에 맞게 잘림 → 숫자 문자열 변형 → 단위 변형
1. 미국식 단위 표현
단위 명칭 | 발음 | 단위 | 미국 (3승 천단위) | 십승 | 천승 | 동양단위 |
---|---|---|---|---|---|---|
thousand | 싸우전드 | 싸 | 1,000 | 3 | 1 | |
million | 밀리언 | 밀 | 1,000,000 | 6 | 2 | 100만 |
billion | 빌리언 | 빌 | 1,000,000,000 | 9 | 3 | 10억 |
trillion | 트릴리언 | 트 | 1,000,000,000,000 | 12 | 4 | 1조 |
quadrillion | 쿼드릴리언 | 쿼 | 1,000,000,000,000,000 | 15 | 5 | 1000조 |
quintillion | 퀸틸리언 | 퀸 | 1,000,000,000,000,000,000 | 18 | 6 | 100경 |
sextillion | 섹스틸리언 | 섹 | 1,000,000,000,000,000,000,000 | 21 | 7 | 10해 |
septillion | 셉틸리언 | 셉 | 1,000,000,000,000,000,000,000,000 | 24 | 8 | 1자 |
octillion | 옥틸리언 | 옥 | 1,000,000,000,000,000,000,000,000,000 | 27 | 9 | 1000자 |
nonillion | 노우닐리언 | 노 | 1,000,000,000,000,000,000,000,000,000,000 | 30 | 10 | 100경 |
decillion | 디실리언 | 데 | 1,000,000,000,000,000,000,000,000,000,000,000 | 33 | 11 | 1구 |
유럽의 영/프/독은 같은 단위 명칭이라도 숫자 단위가 다르다. 골 때린 애들이네...
12'3456'7890'1234'6000'0000'0000'0000
여기서 살아 남으면 이재명은 하늘이 돕는 구세주겠다
반란 무리가 다시 정권을 잡는 건 불가능하니,
미국은 3승 단위로 나가는데, 유럽은 6승 단위로 나간다. 이것도 나라에 따라 또 다름.
접미사 -illion는 라틴어 접미사이다. 앞의 mi-, bi-, tri- quadr- 접두사는 1, 2, 3, 4
원래 mi-는 1천이란 의미이다. 그런데 영어에선 thousand가 1천이라 1천의 1천? (^^)"
Excel에선 정수 29자리 또는 소수점 이하 포함 28~29자리까지 정확하게 표현 가능
그러니까 옥틸리언까지 표현 가능하다.
2. 동양식 단위 표현
한국 | 중국 | 일본 | 단위 | 동양단위 (4승 만단위) | 십승 | 만승 |
---|---|---|---|---|---|---|
일 一壹 | 一壹 yī | 一 いち | 일 | 1 | 0 | 0 |
십 十拾 | 十拾 shí | 十 じゅう | 십 | 10 | 1 | 0.25 |
백 百伯陌 | 百伯陌 bǎi | 百 ひゃく | 백 | 100 | 2 | 0.50 |
천 千仟阡 | 千仟阡 qiān | 千 せん | 천 | 1000 | 3 | 0.75 |
만 萬万 | 万萬 wàn | 万 まん | 만 | 1'0000 | 4 | 1 |
억 億 | 亿億 yì | 億 おく | 억 | 1'0000'0000 | 8 | 2 |
조 兆 | 兆 zhào | 兆 ちょう | 조 | 1'0000'0000'0000 | 12 | 3 |
경 京 | 京 jīng | 京 けい | 경 | 1'0000'0000'0000'0000 | 16 | 4 |
해 垓 | 垓 gāi | 垓 がい | 해 | 1'0000'0000'0000'0000'0000 | 20 | 5 |
자 秭시枾 | 秭 zǐ | 𥝱 じょ / 秭 し | 자 | 1'0000'0000'0000'0000'0000'0000 | 24 | 6 |
양 穰壤 | 穣 ráng | 穣 じょう | 양 | 1'0000'0000'0000'0000'0000'0000'0000 | 28 | 7 |
구 溝 | 沟 gōu | 溝 こう | 구 | 1'0000'0000'0000'0000'0000'0000'0000'0000 | 32 | 8 |
간 澗 | 涧 jiàn | 澗 かん | 간 | 1'0000'0000'0000'0000'0000'0000'0000'0000'0000 | 36 | 9 |
정 正 | 正 zhèng | 正 せい | 정 | 1'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000 | 40 | 10 |
재 載 | 载 zài | 載 さい | 재 | 1'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000 | 44 | 11 |
극 極 | 极 jí | 極 ごく | 극 | 1'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000 | 48 | 12 |
두 글자 이상 단위 표시는 불교 용어라서 쓸 일 없을 것이다. 예) 무량수 = 10⁶⁸ or 10¹²⁸
Excel에선 정수 29자리 또는 소수점 이하 포함 28~29자리까지 정확하게 표현 가능하니
양까지 표현 가능하다.
위의 표만 가지고는 유럽, 미국, 동양 단위로 제대로 변환 해서 읽을 수 없으니, 아래 표를 출력해서 들고 다니며 이용한다. 아니면 이미지로 스마트폰에 다운 받아 가지고 다닌다.
- 한국에선 0이 있으면 숫자와 단위까지 생략하여 읽는다. 예) 1004 = 천사
- 한국에선 첫 숫자가 1이면 숫자 발음 "일"은 생략한다. 예) 1004 = 천사, 10004 = 만사
- 앞에 추가 숫자를 못 붙이도록 $₩€ 등의 기호를 붙인다. 예) ₩1004 = ₩천사
- 끝에 추가 숫자를 못 붙이도록 단위(원=엔=위안)를 붙인다. 예) ₩1004원 = ₩천사원
- 인도 아라비아 숫자 1↔4, 3↔8 왜곡 가능하니 한글 발음으로 적는 게 좋을까?
- 한글이라 하더라도 일↔이, 삼↔사 왜곡 가능하니 한자를 섞을까?
- 한자라 하더라도 一 ↔ 二 ↔ 三, 六 ↔ 八, 七 ↔ 十 ↔ 九 왜곡 가능하니 차라리...
다음 함수는 숫자를 넣어 주면 1천 단위로 끊어서 미국 단위를 한글 한 글자로 표시한다.
미국단위표시(123456789012345678901234567890,2) = 1.23456789012346E+29
사람이 입력한 숫자를 Excel에서 표현 가능한 숫자로 변형한 내용이다.
미국단위표시(123456789012345678901234567890,1) =
입력 : 123456789012345678901234567890
변형 : 123456789012346000000000000000
30자리 정수 문자열로 바꾼 결과이다.
미국단위표시(123456789012345678901234567890,0) =
구분 : 123,456,789,012,346,000,000,000,000,000
단위 : 123옥456셉789섹12퀸346쿼
미국 단위 발음을 한글 한 글자로 표시하여 삽입한 것이다.
Function 미국단위표시(ByVal 수 As Variant, ByVal 옵션 As Integer) As String
Dim 정수문자열 As String
정수문자열 = Format(수, "0") ' 지수 표현을 정수 문자열로 변환
Dim 단위문자 As String: 단위문자 = " 싸밀빌트쿼퀸섹셉옥논데"
Dim 길이 As Long: 길이 = Len(정수문자열)
Dim 결과 As String: 결과 = ""
Dim i As Long, 블럭 As String
Dim 단위인덱스 As Long: 단위인덱스 = 0
' 오른쪽에서부터 3자리씩 끊기
For i = 길이 To 1 Step -3
If i - 2 >= 1 Then
블럭 = Mid(정수문자열, i - 2, 3)
Else
블럭 = Mid(정수문자열, 1, i)
End If
If Val(블럭) <> 0 Then
결과 = CStr(Val(블럭)) & Mid(단위문자, 단위인덱스 + 1, 1) & 결과
End If
단위인덱스 = 단위인덱스 + 1
Next i
Select Case 옵션
Case 0
미국단위표시 = 결과 ' 한글 단위 표기
Case 1
미국단위표시 = 정수문자열 ' 정수 문자열 그대로
Case 2
미국단위표시 = CStr(수) ' 원래 입력 그대로 문자열로
Case Else
미국단위표시 = "오류" ' 잘못된 옵션 입력 시 오류 반환
End Select
End Function
- Variant 데이터 형은 가장 큰 수를 넣을 수 있다.
- Format(수, "0") 함수는 수를 정수 문자열 형태로 바꾼다.
- Mid(정수문자열, i - 2, 3) 함수는 i - 2 위치에서 3개 문자를 뽑는다.
한국단위표시(123456789012345678901234567890,0) =
구분 : 12'3456'7890'1234'6000'0000'0000'0000
단위 : 12양3456자7890해1234경6000조
구분 : 12'3456'7890'1234'6000'0000'0000'0000
단위 : 12양3456자7890해1234경6000조
Function 한국단위표시(ByVal 수 As Variant, ByVal 옵션 As Integer) As String
Dim 정수문자열 As String
정수문자열 = Format(수, "0") ' 지수 표현을 정수 문자열로 변환
Dim 단위문자 As String: 단위문자 = " 만억조경해자양구간정재극"
Dim 길이 As Long: 길이 = Len(정수문자열)
Dim 결과 As String: 결과 = ""
Dim i As Long, 블럭 As String
Dim 단위인덱스 As Long: 단위인덱스 = 0
' 오른쪽에서부터 4자리씩 끊기
For i = 길이 To 1 Step -4
If i - 3 >= 1 Then
블럭 = Mid(정수문자열, i - 3, 4)
Else
블럭 = Mid(정수문자열, 1, i)
End If
If Val(블럭) <> 0 Then
결과 = CStr(Val(블럭)) & Mid(단위문자, 단위인덱스 + 1, 1) & 결과
End If
단위인덱스 = 단위인덱스 + 1
Next i
Select Case 옵션
Case 0
한국단위표시 = 결과 ' 한글 단위 표기
Case 1
한국단위표시 = 정수문자열 ' 정수 문자열 그대로
Case 2
한국단위표시 = CStr(수) ' 원래 입력 그대로 문자열로
Case Else
한국단위표시 = "오류" ' 잘못된 옵션 입력 시 오류 반환
End Select
End Function
다음 함수는 1만 단위 동양 단위를 서양식 콤마 대신 따옴표로 표시 해 주는 것이다.
너무 큰 수는 콤마나 따옴표 보고는 읽을 수 없다. 그래서 앞의 함수를 만든 것이다.
만단위표시(123456789012345678901234567890,0) =12'3456'7890'1234'6000'0000'0000'0000
Function 만단위표시(ByVal 수 As Variant, ByVal 옵션 As Integer) As String
Dim 정수문자열 As String
정수문자열 = Format(수, "0") ' 지수 표현을 정수 문자열로 변환
Dim 길이 As Long: 길이 = Len(정수문자열)
Dim 결과 As String: 결과 = ""
Dim i As Long, 블럭 As String
Dim 첫블럭 As Boolean: 첫블럭 = True
' 오른쪽에서부터 4자리씩 끊기
For i = 길이 To 1 Step -4
If i - 3 >= 1 Then
블럭 = Mid(정수문자열, i - 3, 4)
Else
블럭 = Mid(정수문자열, 1, i)
End If
' 왼쪽에서 오른쪽으로 결과 조립
If 첫블럭 Then
결과 = 블럭
첫블럭 = False
Else
결과 = 블럭 & "'" & 결과
End If
Next i
Select Case 옵션
Case 0
만단위표시 = 결과
Case 1
만단위표시 = 정수문자열
Case 2
만단위표시 = CStr(수)
Case Else
만단위표시 = "오류"
End Select
End Function
굥썩혈, 쥴리김 친일 반란 무리들이
- 똥개 검사로 모함을 하고
- 모지리로 암살 실패 하고
- 군대로 쿠데타 실패 하고도
- 개판으로 유죄 판결 하려는데
여기서 살아 남으면 이재명은 하늘이 돕는 구세주겠다
반란 무리가 다시 정권을 잡는 건 불가능하니,
대신 국민이 투표할 대상을 없애버리겠다?
이걸 멀뚱 멀뚱 보고 있어야 하나
이걸 멀뚱 멀뚱 보고 있어야 하나
아니면 가서 Big Dog 법원에 불이라도 질러야 할까?
똥검개판 새끼들이 완전 미쳤네?
똥검개판 새끼들이 완전 미쳤네?
불알 젖통 흔들며 똥꼬 보지 좆 까는 창피한 짓 좀 그만 해라.
다시 쿠데타 일으켜서 종신 독재 못 하면,
다시 쿠데타 일으켜서 종신 독재 못 하면,
어차피 정권 바뀌어 감옥 가게 되어 있어!
국가와 민족을 위해서 그냥 감옥 가라!
국가와 민족을 위해서 그냥 감옥 가라!
안 가면 우리가 얼려 죽이고, 굶겨 죽이고, 때려 죽인다?