クイズ: 金額と最小単位
한국어 원문으로 표시합니다.
엔화(JPY) 결제 금액을 저장하는 방법으로 가장 알맞은 것은?
- 소수 두 자리 고정 문자열로 적어 다른 통화와 형식을 맞춘다
- 부동소수점으로 두되 화면에 낼 때만 소수점 아래를 잘라 낸다
- 최소단위 정수와 통화 코드 두 값으로 저장하고 표시할 때만 형식을 만든다
- 원화로 환산해 두고 필요할 때 다시 엔화로 되돌린다
파이썬에서 round(2.675, 2) 가 2.68 이 아니라 2.67 을 준다. 원인으로 가장 정확한 것은?
- 2.675 가 이진 부동소수점으로는 2.675 보다 약간 작은 값이라 절반에 못 미친다
- round 가 언제나 내림을 하도록 구현되어 있어서 소수점 아래가 잘린다
- 인자가 두 개일 때 round 는 자리수를 무시하고 정수로 끊기 때문이다
- 파이썬의 부동소수점이 10진수라서 2.675 가 2.67 로 저장된다
수수료 1,000원을 가중치 1 대 1 대 1 로 세 곳에 나눌 때, 최대잉여법이 내놓는 결과는?
- 333, 333, 333 을 주고 남은 1원은 수수료 수익 계정으로 보낸다
- 334, 334, 334 로 올려 주고 합계가 1,002원이 되는 것을 허용한다
- 333.33, 333.33, 333.34 처럼 소수를 남겨 합계를 맞춘다
- 334, 333, 333 으로 잉여가 같으면 앞 번호부터 1원을 더 준다
여러 줄의 외화 금액을 원화로 환산할 때 줄마다 환산해 더한 값과 먼저 더한 뒤 한 번 환산한 값이 다르다. 올바른 대응은?
- 환율의 소수 자리를 늘리면 두 값이 같아지므로 자리를 늘린다
- 청구서에 줄마다 원화가 찍히는지 총액만 찍히는지에 따라 계약으로 하나를 고른다
- 두 값의 평균을 내어 어느 쪽에도 치우치지 않게 한다
- 반올림을 버림으로 바꾸면 순서와 무관해지므로 버림으로 통일한다
SQLite 에 금액을 넣을 때 주의할 점으로 맞는 것은?
- 컬럼을 INTEGER 로 선언해도 실수를 넣으면 그 값은 REAL 로 저장된다
- INTEGER 컬럼은 입력값을 자동으로 반올림해 정수로 바꿔 저장한다
- REAL 컬럼에 정수를 넣으면 오류가 나므로 형 변환을 먼저 해야 한다
- SQLite 에는 소수를 정확히 저장하는 DECIMAL 형이 따로 있다
반올림 모드를 ROUND_HALF_UP 으로 쓰기로 했다. 이 결정을 다루는 방법으로 가장 알맞은 것은?
- 코드에 상수로 박아 두면 충분하므로 따로 기록하지 않는다
- 계산기마다 편한 모드를 쓰되 최종 합계에서만 한 번 맞춘다
- 언어 기본값이 무엇이든 그것을 따르는 것이 가장 안전하다
- 정책으로 문서에 적고 산출물 보고서에도 어떤 모드였는지 함께 남긴다