기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 decimal 모듈 완전 정복 💱

Decimal icon

파이썬 decimal 모듈 완전 정복 💱

decimal 모듈은 부동소수점의 오차 없이 정확한 소수 계산을 가능하게 해줍니다. 특히 금융, 과학 계산 등 정밀한 수치 처리가 필요한 상황에서 매우 유용합니다.

1. 기본 사용법과 `Decimal` 객체 생성

from decimal import Decimal

a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)  # 0.3 (float가 아닌 정확한 결과)

2. 반올림과 정밀도 설정 (`getcontext`)

from decimal import Decimal, getcontext, ROUND_HALF_UP

getcontext().prec = 5  # 총 5자리 정밀도
getcontext().rounding = ROUND_HALF_UP

res = Decimal('1.23456') + Decimal('2.34567')
print(res)  # 3.5802 (정밀도와 반올림 방식 적용)

3. 금융 계산 등의 금액 표현

from decimal import Decimal

price = Decimal('19.99')
quantity = Decimal('3')
total = price * quantity
print(f"총 금액: {total}")  # 총 금액: 59.97

4. 비교와 정확한 나눗셈

from decimal import Decimal

d1 = Decimal('1') / Decimal('3')
d2 = Decimal('0.33333')
print(d1 == d2)  # False (정밀도 차이 인식)
print(d1.quantize(Decimal('0.00001')))  # 0.33333

요약

  • Decimal 객체를 사용해 정확한 소수 계산 가능
  • `getcontext()`를 통해 정밀도와 반올림 방식을 설정할 수 있음
  • 금융 계산이나 금액 표현에 적합
  • 정확한 비교, 양, 단위 계산에 효과적

댓글

가장 많이 본 글

Icons by Flaticon