본문으로 건너뛰기
🛠️ToolsShed

혈중알코올농도 계산기

음주량, 체중, 시간을 기반으로 혈중알코올농도(BAC)를 추정합니다.

이 도구 소개

혈중 알코올 농도(BAC)는 혈액 중 알코올 백분율을 나타내는 지표로, 음주의 영향 정도를 측정하는 중요한 수치입니다. 이 BAC 계산기는 섭취한 알코올 양, 체중, 성별, 음주 시작 후 경과 시간에 기반하여 추정 혈중 알코올 농도를 계산합니다. 추정 BAC를 이해하면 운전, 기계 조작, 높은 판단력이 필요한 활동이 안전한지 결정하는 데 도움이 됩니다.

계산기를 사용하려면 섭취한 표준 음료(표준 음량 단위)의 잔수, 체중, 성별을 입력하고 음주 시작 후 경과 시간을 지정하세요. 계산기는 법의학과 공중보건 분야에서 널리 인정된 위드마크 공식을 사용하여 BAC를 추정합니다. 그러나 이는 어디까지나 추정값이며, 실제 BAC는 음식 섭취, 신진대사 속도, 알코올 농도, 수분 섭취 등 여러 요인에 따라 달라집니다.

이 결과는 교육 목적 및 위해 감소를 위해서만 제공되며, 법적 주장이나 호흡 검사의 대체 방법으로 사용되어서는 안 됩니다. 많은 관할권에서 법정 음주운전 한계(많은 국가에서 0.08%)를 정하고 있으며, 경찰 호흡 검사가 유일한 신뢰할 수 있는 측정 방법입니다. 항상 안전을 우선으로 하고 음주 후에는 택시, 대리운전, 또는 라이드셰어 서비스를 이용하세요.

자주 묻는 질문

코드 구현

def calculate_bac(
    drinks: list[dict],
    weight_kg: float,
    gender: str,
    hours_elapsed: float
) -> float:
    """
    Estimate Blood Alcohol Content using the Widmark formula.
    BAC = (alcohol_grams / (weight_kg * r * 10)) - (0.015 * hours)
    r = 0.68 for male, 0.55 for female

    drinks: list of {"abv": float (%), "volume_ml": float}
    WARNING: For estimation only. Never use to determine fitness to drive.
    """
    r = 0.68 if gender.lower() == "male" else 0.55
    total_alcohol_grams = sum(
        d["volume_ml"] * (d["abv"] / 100) * 0.789  # ethanol density = 0.789 g/ml
        for d in drinks
    )
    bac = (total_alcohol_grams / (weight_kg * r * 10)) - (0.015 * hours_elapsed)
    return max(bac, 0.0)

# Example: 80kg male, 2 beers (5%, 355ml), 1 hour elapsed
drinks = [
    {"abv": 5, "volume_ml": 355},
    {"abv": 5, "volume_ml": 355},
]
bac = calculate_bac(drinks, weight_kg=80, gender="male", hours_elapsed=1)
print(f"Estimated BAC: {bac:.4f}%")  # ~0.0367%

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.