使用方法
- 血液酒精含量计算器按「一份酒」来折算,先在「酒类预设」里选一种常见的酒,体积和酒精度会自动填好;喝的不是预设里的酒,就选「自定义」,再自己填每份体积和酒精度。
- 「每份体积」填毫升数,允许 10~2000;「酒精度」按瓶标上的 %vol 填,允许 0.1~96。
- 「饮用份数」填喝了几份。这里的「一份」= 上面那个体积,两瓶 500 mL 啤酒就填 2,半瓶就填 0.5;允许 1~50 份。
- 填体重(30~200 千克)并选择生理性别——这决定 Widmark 系数 r:男 0.68、女 0.55。
- 填「距喝下第一口的时间」,「0」表示刚喝完。允许 0~144 小时,隔夜酒就填十几小时。
- 点「估算血液酒精含量」(或在任意输入框里直接按 Enter),结果卡会立刻刷新。页面打开时已经预置了一组示例:500 mL 装 4%vol 啤酒 2 瓶、70 kg 男性、距第一口 2 小时,对应 36.3 mg/100mL。
这个血液酒精含量计算器能解决什么
一是把「喝了多少」翻译成「血液里大约多少」。啤酒、葡萄酒、白酒、威士忌的酒精度差十倍以上,凭「就喝了两杯」根本无法比较。本页把体积、酒精度、密度三个量乘起来得到纯酒精克数,再按体重和性别折算成浓度,同一套口径下不同酒类可以直接比。
二是看清体重与性别的放大效应。同样两瓶 500 mL 啤酒,70 kg 男性峰值 66.3 mg/100mL,50 kg 女性峰值 114.8 mg/100mL,差 1.73 倍——已经跨过醉酒驾车的 80 mg/100mL 线。这个差距不是「酒量」问题,而是体液总量与酒精分布容积的物理差异。
三是估算代谢所需时间。结果区会给出「降到 20 mg/100mL 以下还需多少小时」,比笼统的「睡一觉就好了」具体得多。默认示例里 2 瓶啤酒需要自第一口起约 3.1 小时才降到 20 mg/100mL 以下,也就是说 2 小时后还剩约 1.1 小时。
四是核对普法口径里的数字。执法普法常说「一罐 330 mL 啤酒或半两 50 度白酒就够 20 mg/100mL」。用本页反算:330 mL×4%vol 在 70 kg 男性身上是 21.9 mg/100mL,半两 50 度在 70 kg 男性身上是 20.7 mg/100mL,与官方口径吻合,可以拿来自查公式有没有用错。
本页不做这些事:不给「能不能开车」的结论、不预测个人实际代谢曲线、不处理空腹与餐后吸收速度的差别、不替代呼气式酒精检测仪。这些判断只能由执法检测与医疗检查给出。
估算原理:Widmark 公式、5.14 与三个系数
这个血液酒精含量计算器的核心只有一行公式,就是经典的 Widmark 公式:BAC% = (A × 5.14) / (W × r) − 0.015 × t。其中 A 是摄入的纯酒精量,W 是体重,r 是酒精分布系数,t 是距第一口酒经过的小时数。
5.14 不是一个随手取的魔数。它来自英美单位制:当 A 用「盎司纯酒精」、W 用「磅」时,1 液体盎司 = 29.5735 mL,乙醇 20 ℃ 密度 0.789 g/mL,二者相乘得 23.3335 g;1 磅 = 453.59237 g;于是把克换算成百分比要乘的系数就是 23.3335 × 100 ÷ 453.59237 = 5.1442,取两位即 5.14。本页为了和中文用户熟悉的毫升、千克、克对齐,实际用的是同一公式的 SI 写法 BAC% = A / (10 × W × r) − 0.015 × t,A 用克、W 用千克。两种写法的等价性已经逐点验证:在 5~80 g 酒精、45~110 kg 体重、两个 r 值的网格上,最大偏差只有 2.61×10⁻⁴ 个百分点。
输入怎么变成 A。酒精度 %vol 表示 20 ℃ 下乙醇体积占比,所以纯酒精质量 = 体积(mL) × 酒精度 ÷ 100 × 0.789。500 mL 装 4%vol 啤酒一瓶就是 500 × 0.04 × 0.789 = 15.78 g,两瓶就是 31.56 g。这个 0.789 就是乙醇密度,不能用水的 1.0 代替——用错会凭空多算 26.7% 的酒精。
r 取 0.68 和 0.55 的来历。r 是酒精分布容积与体重的比值,本质是「体内水分占体重的比例」的近似值:乙醇是亲水的,进入体内后只分布在体液中,脂肪几乎不参与。成年男性体脂率较低、体液比例约 68%,女性约 55%,这就是两个取值的依据。它也是本页结果对个体差异最敏感的参数——同一个 70 kg 的人,把 r 从 0.68 换成 0.55,峰值浓度直接变成 1.2364 倍。
−0.015 × t 是代谢项,不是衰减系数。0.015 的单位是「% BAC 每小时」,等价于 15 mg/100mL 每小时,代表肝脏平均每小时能清除的酒精量。它随 t 线性增长,因此 Widmark 给出的是一条直线下降的曲线,而不是先快后慢;一旦 t 超过峰值除以 0.015 的时刻,公式会算出负值,本页统一夹到 0,避免出现「负酒精」这种荒谬结果。
两个阈值来自国标。国标 GB 19522《车辆驾驶人员血液、呼气酒精含量阈值与检验》规定:血液酒精含量 ≥20 mg/100mL 且 <80 mg/100mL 属饮酒后驾车,≥80 mg/100mL 属醉酒驾车(2010 版与 2024 版沿用的临界值相同)。把公式输出的百分比乘以 1000 就是 mg/100mL,例如 0.0363% 即 36.3 mg/100mL。另一条可以参考的量是《中国居民膳食指南(2022)》的建议:成年人如饮酒,一天饮用的酒精量不超过 15 g,约等于啤酒 450 mL 或 38 度白酒 50 mL。
完整示例(数字由复算脚本得出)
示例条件与页面打开时的默认值完全一致:普通瓶装啤酒 500 mL、4.0%vol、2 瓶、70 kg 男性、距第一口 2 小时。
- 纯酒精总量 A = 500 × 0.04 × 0.789 × 2 = 31.56 g;
- 峰值 BAC = 31.56 ÷ (10 × 70 × 0.68) = 0.06630% = 66.3 mg/100mL;
- 2 小时后 = 0.06630 − 0.015 × 2 = 0.03630% = 36.3 mg/100mL;
- 判定:20 ≤ 36.3 < 80,落在饮酒驾车区间;
- 降到 20 mg/100mL 以下要等 (0.06630 − 0.02) ÷ 0.015 = 3.087 小时,已经过了 2 小时,所以还需约 1.1 小时(65 分钟);
- 完全代谢回 0 需要 0.06630 ÷ 0.015 = 4.42 小时。
把体重这一项换掉,结论会差很多。同一批酒(2 瓶 500 mL、4.0%vol)在不同体重下的峰值:
| 体重 | 男性峰值(r=0.68) | 女性峰值(r=0.55) | 是否越过 80 mg/100mL 醉酒线 |
|---|---|---|---|
| 45 kg | 103.1 mg/100mL | 127.5 mg/100mL | 男女均越过 |
| 50 kg | 92.8 mg/100mL | 114.8 mg/100mL | 男女均越过 |
| 60 kg | 77.4 mg/100mL | 95.6 mg/100mL | 女性越过,男性未越 |
| 70 kg(默认) | 66.3 mg/100mL | 82.0 mg/100mL | 女性刚好越过 |
| 80 kg | 58.0 mg/100mL | 71.7 mg/100mL | 均未越过 |
| 90 kg | 51.6 mg/100mL | 63.8 mg/100mL | 均未越过 |
常见酒类的酒精克数与输入范围
页面上那张 25 行的对照表就是按上面的公式逐行算出来的,它同时回答了「这杯酒有多少克酒精」和「一杯下去峰值大约多少」。挑几行看得更清楚:
| 酒类 | 规格 | 纯酒精 g | 折合 15 g 建议量的几倍 | 说明 |
|---|---|---|---|---|
| 普通罐装啤酒 | 330 mL / 4.0%vol | 10.41 | 0.69 倍 | 一罐刚好低于一天 15 g 的建议上限 |
| 普通瓶装啤酒 | 500 mL / 4.0%vol | 15.78 | 1.05 倍 | 一瓶就略超建议上限 |
| 干红葡萄酒 | 150 mL / 12.5%vol | 14.79 | 0.99 倍 | 与指南给出的 150 mL 葡萄酒口径一致 |
| 高度白酒 | 50 mL / 52%vol | 20.51 | 1.37 倍 | 一两 52 度,酒精量已超过一天上限 |
| 低度白酒 | 50 mL / 38%vol | 14.99 | 1.00 倍 | 指南「38 度白酒 50 mL」原文即约 15 g |
| 韩国烧酒 | 360 mL / 17.0%vol | 48.29 | 3.22 倍 | 一瓶烧酒相当于 3 天以上的建议量 |
输入范围就是控件的硬边界,超出会直接给出具体提示而不是悄悄算出一个错数:
| 字段 | 允许范围 | 越界时页面的说法 |
|---|---|---|
| 每份体积 | 10~2000 mL | 提示填写范围,并说明一听 330、一瓶 500、一扎 1000 都合法 |
| 酒精度 | 0.1~96 %vol | 0 会被拒绝(无醇饮品也含微量酒精),96 是常见蒸馏酒上限 |
| 饮用份数 | 1~50 份 | 支持 0.5 这类小数,半瓶啤酒填 0.5 |
| 体重 | 30~200 kg | 体重填 0 会让公式除以 0 得到无穷大,必须先拦下 |
| 距第一口时间 | 0~144 小时 | 允许 0,允许隔夜;负数无意义 |
结果边界、舍入与免责说明
- Widmark 是线性模型,会算出负数。默认示例中峰值除以 0.015 得 4.42 小时,超过这个时间公式给出负值(如 5 小时后为 −0.0087%)。血液酒精含量计算器把负值夹到 0,因为你不可能有负的血液酒精含量;但这也意味着超过 4.42 小时之后,页面给的是「0」而不是「已经安全」——胃里没吸收完的酒精仍在陆续入血。
- 舍入发生在最后的显示环节。BAC% 与 mg/100mL 都由未截断的浮点数换算而来,只在输出时保留一位小数。这带来一个必须知道的现象:19.95 mg/100mL 会显示成 20.0,看起来像踩线,实际未达阈值;反之 79.96 会显示 80.0,看起来越线。判定文字用的是未舍入的原始值,所以卡片上的判定与数字偶尔会有 0.05 上下的观感差异,这是显示精度而不是逻辑错误。
- 阈值判定用 ≥ 而不是 >。按 GB 19522,血液酒精含量恰好等于 20 mg/100mL 就算饮酒后驾车,恰好等于 80 就算醉酒驾车,所以代码里是
>= 80与>= 20,不存在「刚好卡在线上算不算」的模糊地带。 - 误差量级比你想的大。Widmark 的经典误差范围常被引述为 ±20% 到 ±30%,主要来源是 r 值把个体体液比例一刀切、忽略空腹时酒精在 15~30 分钟内快速入血带来的峰值上移、以及胃内容物延缓吸收。饮酒后 30~90 分钟的实测值通常高于公式估算,个体差异也远超公式能覆盖的范围。
- 代谢率 0.015%/h 是人群均值。长期饮酒者可能更快,肝功能受损者更慢,女性与低体重者单位体重的清除能力也偏低。所以「几小时后可以开车」这种问题,本页给不出可靠答案——唯一可靠的做法是不开车。
- 本页结果不构成法律或医学依据。交通事故责任认定中的酒精含量,以执法机关依照 GA/T 105 等方法做出的检验结果为准;本页只是把公开公式与公开阈值对照展示出来,方便你理解酒精量与浓度的数量级关系。
- 不要用它做反向推断。有人想用「喝多少才不被查出来」来安排饮酒,这在方法上就不成立:公式的输入是你自己估的体积、酒精度和体重,任一项偏差都会传导到结果,而执法检测的是真实血样。
常见问题
为什么公式里要乘 0.789,直接用体积不行吗?
因为 %vol 是体积百分比,而 Widmark 公式里的 A 是纯酒精质量。要跨过体积和质量,必须乘乙醇在 20 ℃ 下的密度 0.789 g/mL。若偷懒按 1.0 算(把酒精当水),500 mL 装 4%vol 啤酒会被算成 20 g 而不是 15.78 g,整条结果的偏差达 26.7%。
0.68 和 0.55 这两个数能换成更准的吗?
Widmark 原始取值就是这两个整数,后来的研究(如 Watson 体液公式、Seidl 公式)会更细地考虑年龄、身高、体重,但需要用到的输入项本页并不采集,而且它们也只是把 ±20% 的误差压到 ±10% 左右。本页刻意保留经典取值,是为了让公式可核对、可复算。
代谢率为什么是 0.015%/h 而不是别的数?
0.015% BAC 每小时等于 15 mg/100mL 每小时,是「肝脏每小时约清除 7~10 g 乙醇」这一生理事实换算到常见体重区间后的常用均值。它在公式里以减法项出现,因此「喝了多少克」和「等了多久」是同一量纲下的对冲关系,这也正是很多国家用「标准杯/小时」来提示风险的依据。
两瓶啤酒 2 小时后还有 36.3 mg/100mL,为什么感觉没那么醉?
主观感受与血液浓度不同步。酒精对认知与反应速度的影响在低浓度时就已经存在,而人对自身状态的判断能力本身也被酒精削弱,所以「感觉清醒」不能作为证据。国标把 20 mg/100mL 定为饮酒驾车线,依据正是这个浓度区间的操作能力已经下降。
同样是 70 kg,为什么女性要选 0.55?
因为决定酒精浓度的不是体重而是体液总量。同样体重下,女性体脂比例通常更高、体液占比更低,酒精被「稀释」的空间更小。计算上就体现为 r 从 0.68 降到 0.55,分母缩小,浓度按 0.68 ÷ 0.55 = 1.2364 倍放大。示例中 70 kg 女性峰值 82.0 mg/100mL 已越过 80 的醉酒线,男性 66.3 尚未越过。
为什么表格里的「峰值 BAC」不直接等于结果区显示的当前 BAC?
两者是两个时点。峰值是假设全部酒精一次性入血、尚未代谢时的上界,用 t = 0 得到;当前值是峰值减去 0.015 × t 之后的浓度。表格固定按 t = 0 计算,方便比较不同酒类的「一口下去能顶多高」;结果区则按你填的经过时间做减法。把经过时间填 0,两者的数字就会重合。
喝啤酒和喝白酒,只要酒精克数一样结果就一样吗?
在本页的公式口径下是的,公式只认纯酒精克数,这也是 Widmark 模型的假设。真实情况会有差别:高度酒在空腹时入血更快、峰值更高,含二氧化碳的饮品可能加速胃排空,而先吃东西能明显压低峰值。所以用「克数相同就等价」来安排饮酒同样是不可靠的。
隔夜酒为什么第二天还测得出?
因为清除是按时间线性累加的。默认示例的 31.56 g 酒精需要约 4.42 小时才回到 0,如果喝得更多、体重更轻,时间会更长。睡前喝到 100 mg/100mL 量级,8 小时也只降 120 mg/100mL 对应的清除量,实测仍可能落在 20 mg/100mL 以上。把「睡了多久」等同于「代谢完了」是这个工具想纠正的最常见误用。