v0.232.0
kanpic v0.232.0
v0.232.0
VALUE 가 사람이 적는 수의 겉모양을 읽는다
가져온 표의 금액 칸은 대개 글자입니다. 1,000, $1,000, (1,000), 12% —
모두 사람이 칸에 적는 꼴이고, 그것을 숫자로 바꾸려고 부르는 함수가 VALUE
입니다. 그런데 여태 VALUE 는 1000 같은 맨숫자 글자만 읽고 나머지는 모두
#VALUE! 이었습니다. 자릿점 하나가 붙었다는 이유로 열 전체를 손으로 고쳐야
했고, 달리 쓸 함수도 없었습니다.
이제 이렇게 읽습니다.
=VALUE("1,000")→ 1000,=VALUE("1,234.50")→ 1234.5=VALUE("$1,000"),=VALUE("₩12,500"),=VALUE("-$1,234.50")— 통화 기호는
앞에 와도 뒤에 와도 되고, 부호는 기호의 앞뒤 어느 쪽에 적어도 됩니다.=VALUE("(1,000)")→ -1000. 회계 서식은 음수를 괄호로 적고, 내보낸 CSV 가
그 꼴입니다.=VALUE("10%")→ 0.1=VALUE("12:00")→ 0.5,=VALUE("2026-01-05")→ 46027. 시각과 날짜는
TIMEVALUE·DATEVALUE와 같은 자로 읽으므로 두 함수의 답이 갈리지
않습니다.
넓게 읽더라도 수가 아닌 것은 그대로 #VALUE! 입니다. 자릿점 뒤가 세 자리가
아닌 "1,00", "12,34" 는 자릿점인지 소수점인지 알 수 없으므로 읽지 않습니다.
골라 읽으면 열 하나가 통째로 1000배 어긋난 채 조용히 표에 들어갑니다.
셈에 끼어드는 칸의 값은 그대로입니다. =SUM(A1:A3) 이 "1,000" 이라고
적힌 칸을 제멋대로 1000 으로 세지는 않습니다. 그쪽은 사람이 읽어 달라고 부른
적이 없으므로 좁은 채로 둡니다.
NUMBERVALUE 를 더했습니다
나라마다 수를 적는 꼴이 다릅니다. 독일·프랑스에서 내려받은 자료의 1.234,5
는 1234.5 인데, 우리 표기로 읽으면 1.2345 도 아니고 오류입니다. NUMBERVALUE
는 구분 기호를 부르는 쪽이 정하는 유일한 함수입니다.
=NUMBERVALUE("1.234,5", ",", ".") 1234.5
=NUMBERVALUE(" 3 000 ") 3000 가운데 빈칸도 무시합니다
=NUMBERVALUE("9%%") 0.0009 % 하나마다 100 으로 나눕니다
=NUMBERVALUE("") 0
소수 구분 기호가 두 번 나오거나, 자릿수 구분 기호가 그 뒤에 오거나, 두 기호가
같으면 #VALUE! 입니다. 엑셀이 정한 규칙 그대로입니다. 엑셀 파일로 내보낼 때는
_xlfn. 접두사를 붙여 나가므로 엑셀에서 열어도 #NAME? 이 되지 않습니다.
2192 년 너머의 날짜가 날 수로 셈된다
날짜를 날 수로 바꾸는 DateSerial 이 두 날짜의 사이를 time.Duration 으로
셌습니다. 나노초를 int64 에 담는 그릇이라 292 년까지만 셀 수 있어서, 1899
년에서 2192 년보다 먼 날을 빼면 조용히 넘쳤습니다. 9999-12-31 은 2958465
여야 하는데 106751(2192-04-08)이 나왔고, 되돌려 읽는 serialDate 는 그 끝까지
제대로 읽고 있었으니 짝이 어긋나 있었습니다. 먼 날짜를 담은 일정표의 막대가
엉뚱한 자리에 그려집니다. 이제 초로 세므로 넘치지 않습니다.
확인
internal/formula/text_to_number_test.goTestValueReadsTheShapesPeopleTypeIntoCells— 자릿점·통화·괄호·백분율·시각·날짜 21가지TestValueStillRefusesWhatIsNotANumber—"1,00","--5","25:00"처럼 읽지 말아야 할 것TestValueAgreesWithTimeValueAndDateValue— 같은 글자를TIMEVALUE·serialDate와 맞대 봄TestNumberValueFollowsTheSeparatorsItIsGiven,TestNumberValueRefusesAmbiguousText— 엑셀 도움말의 규칙 표TestValueOverAColumnOfImportedAmounts— 금액이 든 열에 범위로 걸어=SUM(VALUE(A1:A4))
internal/formula/library_test.goTestDateSerialRoundTripsWithSerialDate—2200-01-01과9999-12-31을 더해 넘침을 막음
오프라인 설치
이 릴리즈는 웹 자산과 서버 바이너리를 포함한 Docker 이미지 아카이브로 제공됩니다.
sha256sum -c kanpic-v0.232.0.tar.gz.sha256
gzip -dc kanpic-v0.232.0.tar.gz | docker load
docker run --rm -p 8080:8080 \
-e POSTGRES_DSN='postgres://kanpic:password@postgres.internal:5432/kanpic?sslmode=require' \
kanpic:v0.232.0- 필수 런타임 환경 변수:
POSTGRES_DSN - Redis 및 외부 인터넷 연결: 불필요
- 관리자 초기 로그인을 보호하려면
BOOTSTRAP_ADMIN_ID와BOOTSTRAP_ADMIN_PASSWORD를 함께 지정합니다. - 무결성 검증 파일:
kanpic-v0.232.0.tar.gz.sha256