使用方法
- 填每日总热量(默认示例 2200 kcal)。它应当来自基础代谢与活动水平的估算;手上只有食品标签上的千焦数时,先用「千焦转千卡换算」折成 kcal 再填。
- 填碳水供能份额(默认 45%)。它指碳水提供的热量占全天总热量的比例,与「碳水占食物重量的比例」不是一回事,两者可以相差好几倍。
- 填体重(默认 70 kg)。体重只影响「每公斤体重克数」这一项,不改变碳水总克数,但正是这一项决定了同一个克数对你是否偏多。
- 填膳食纤维(默认 25 g),用于从总碳水里扣除得到净碳水;填 0 表示不扣除,此时净碳水等于总碳水。
- 填升糖指数 GI(默认 55,白米饭的常用值)。GI 只参与血糖负荷 GL 的估算,不影响任何克数结果。
- 上方五个输入框按 Enter 立即重算;下方批量框用 Ctrl + Enter(macOS 为 Command + Enter)触发。批量表默认 12 行,可「加载更多」或导出 CSV、复制 TSV。
这个碳水摄入量计算器能解决什么问题
一是把「少吃点碳水」变成可以称量的克数。2200 kcal 配 45% 份额,碳水就是 247.5 g;想压到生酮常用的 50 g,份额得从 45% 降到约 9%,而不是「少盛半碗饭」。
二是分清总碳水与净碳水。膳食纤维不被小肠酶解吸收,所以 247.5 g 总碳水扣掉 25 g 纤维后是 222.5 g 净碳水,占总量 89.90%。看标签时,两款都标「碳水 30 g」的食品,纤维含量不同,进入血液的量也不同。
三是给出个体化的 g/kg 而不是一刀切的克数。同样是 247.5 g,45 kg 的人是 5.500 g/kg,100 kg 的人只有 2.475 g/kg,相差一倍多。耐力项目的补糖方案本来就按体重分档:低强度不足 1 小时 0-30 g/h,中强度 1-2 小时 30-60 g/h,高强度 2-3 小时 60-90 g/h,超长超过 3 小时 80-90 g/h。
四是同时对照两个来源不同的阈值。130 g/天来自膳食营养素参考摄入量,依据是大脑与红细胞对葡萄糖的需求下限,长期低于它会转向酮体供能;50 g/天则是生酮饮食维持营养性酮症的经验上限。247.5 g 对前者是「达标(高出 117.5 g)」,对后者是「远高于(还差 197.5 g 才降到阈值)」——两个结论并不矛盾,因为阈值出自两套逻辑。
五是把「份额合不合理」也一并检查。45% 落在可接受宏量营养素分布范围 45-65% 内;份额填 20% 或 80%,克数照样算得出来,但页面会标出低于下限或高于上限。
本站的这个碳水摄入量计算器按 Atwater 因子折算,不做这些事:不评估餐后血糖反应,不替代医学营养治疗,也不区分糖与淀粉的代谢差异。
计算原理与变量说明
第一层是份额折算:碳水热量(kcal) = 总热量 × 份额% ÷ 100。2200 × 45 ÷ 100 = 990.0 kcal。这一步只是把百分比换成绝对热量,不含营养学假设。
第二层是Atwater 因子:碳水(g) = 碳水热量 ÷ 4。990.0 ÷ 4 = 247.5 g。这里的 4 kcal/g 是 Atwater 体系给「可利用碳水」的平均代谢能,与燃烧热不是同一个数:它已扣除消化吸收损失与尿中含氮物的能量。同一体系里蛋白质取 4 kcal/g、脂肪取 9 kcal/g、酒精取 7 kcal/g。
第三层是净碳水:净碳水(g) = max(0, 碳水 g − 膳食纤维 g)。247.5 − 25 = 222.5 g。膳食纤维在化学分析上属于碳水化合物,标签的总碳水里含它,但它不被小肠吸收,所以从「可利用」的角度要扣掉。
第四层是个体化指标:g/kg = 碳水 g ÷ 体重 kg。247.5 ÷ 70 = 3.536 g/kg。这一项才适合跨体重比较,也是运动补糖分档的依据。
第五层是血糖负荷:GL = GI × 可用碳水 g ÷ 100,分级为 GL 小于 11 为低、11 到 19 为中、大于等于 20 为高。GI 取 55、整日可用碳水 222.5 g 时 GL = 122.4,属高档。需要说明的是,GL 的经典用法针对一份食物而非一整天,所以整日合计必然很大;按三餐均分每餐约 40.8。
变量取值范围:总热量 1 到 20000 kcal,碳水份额 0 到 100%,体重 1 到 500 kg,膳食纤维 0 到 500 g,GI 1 到 110。五个输入互相独立,改任意一个只影响它参与的那几项输出。
完整示例
示例条件就是页面默认值:每日总热量 2200 kcal,碳水份额 45%,体重 70 kg,膳食纤维 25 g,GI 55。逐项结果是:
- 碳水热量 2200 × 45 ÷ 100 = 990.0 kcal,占全天总热量的 45.0%;
- 碳水克数 990.0 ÷ 4 = 247.5 g;
- 每公斤体重 247.5 ÷ 70 = 3.536 g/kg;
- 净碳水 247.5 − 25 = 222.5 g,占总量 89.90%;
- 与 DRI 最低推荐 130 g/天 比较:达标(高出 117.5 g);
- 与 AMDR 的 45-65% 比较:份额 45% 在区间内;
- 与生酮阈值 50 g/天 比较:远高于(还差 197.5 g 才降到阈值);
- 整日血糖负荷 GL = 55 × 222.5 ÷ 100 = 122.4,分级高。
换个角度看同一组数:把体重从 70 kg 改成 45 kg,碳水仍是 247.5 g,但 g/kg 从 3.536 跳到 5.500;改成 100 kg 则掉到 2.475。这就是只看绝对克数无法判断高低的原因。
对照表
第一张表固定总热量 2200 kcal、体重 70 kg、纤维 25 g,只把碳水份额从 5% 加到 65%。
| 份额 % | 碳水 g | g/kg | 净碳水 g |
|---|---|---|---|
| 5 | 27.5 | 0.393 | 2.5 |
| 10 | 55.0 | 0.786 | 30.0 |
| 15 | 82.5 | 1.179 | 57.5 |
| 20 | 110.0 | 1.571 | 85.0 |
| 25 | 137.5 | 1.964 | 112.5 |
| 30 | 165.0 | 2.357 | 140.0 |
| 40 | 220.0 | 3.143 | 195.0 |
| 45 | 247.5 | 3.536 | 222.5 |
| 50 | 275.0 | 3.929 | 250.0 |
| 55 | 302.5 | 4.321 | 277.5 |
| 60 | 330.0 | 4.714 | 305.0 |
| 65 | 357.5 | 5.107 | 332.5 |
第二张表反过来:固定 2200 kcal、45%、纤维 25 g,只改体重。碳水恒为 247.5 g,变化的是 g/kg。45 kg 那一行已是 5.500 g/kg,接近耐力项目全天补糖的量级;100 kg 那一行只有 2.475 g/kg。
| 体重 kg | 碳水 g | g/kg |
|---|---|---|
| 45 | 247.5 | 5.500 |
| 50 | 247.5 | 4.950 |
| 55 | 247.5 | 4.500 |
| 60 | 247.5 | 4.125 |
| 70 | 247.5 | 3.536 |
| 80 | 247.5 | 3.094 |
| 90 | 247.5 | 2.750 |
| 100 | 247.5 | 2.475 |
第三张表是血糖负荷分级,GI 固定 55,按一份食物里的可用碳水克数算 GL。GI 不变时,吃 30 g 是中负荷(16.5),吃到 100 g 就变成高负荷(55.0)。
| 可用碳水 g | GL(GI=55) | 分级 |
|---|---|---|
| 30 | 16.5 | 中 |
| 50 | 27.5 | 高 |
| 80 | 44.0 | 高 |
| 100 | 55.0 | 高 |
| 150 | 82.5 | 高 |
| 200 | 110.0 | 高 |
第四张表是批量对照:每行写一条「总热量,份额,体重,纤维,GI」,一次算完。默认 14 行,先显示 12 行,点「加载更多」看全部,也能导出 CSV 或复制 TSV。示例固定总热量 2200 kcal 与纤维 25 g,把份额从 5% 推到 65%,最后一行改成 45 kg 体重做对照。
| 序号 | 总热量 kcal | 份额 % | 体重 kg | 碳水 g | g/kg | 净碳水 g | GL | 分级 |
|---|---|---|---|---|---|---|---|---|
| 1 | 2200.0 | 5.0 | 70.0 | 27.5 | 0.393 | 2.5 | 1.4 | 低 |
| 2 | 2200.0 | 10.0 | 70.0 | 55.0 | 0.786 | 30.0 | 16.5 | 中 |
| 3 | 2200.0 | 15.0 | 70.0 | 82.5 | 1.179 | 57.5 | 31.6 | 高 |
| 4 | 2200.0 | 20.0 | 70.0 | 110.0 | 1.571 | 85.0 | 46.8 | 高 |
| 5 | 2200.0 | 25.0 | 70.0 | 137.5 | 1.964 | 112.5 | 61.9 | 高 |
| 6 | 2200.0 | 30.0 | 70.0 | 165.0 | 2.357 | 140.0 | 77.0 | 高 |
| 7 | 2200.0 | 40.0 | 70.0 | 220.0 | 3.143 | 195.0 | 107.3 | 高 |
| 8 | 2200.0 | 45.0 | 70.0 | 247.5 | 3.536 | 222.5 | 122.4 | 高 |
| 9 | 2200.0 | 50.0 | 70.0 | 275.0 | 3.929 | 250.0 | 137.5 | 高 |
| 10 | 2200.0 | 55.0 | 70.0 | 302.5 | 4.321 | 277.5 | 152.6 | 高 |
| 11 | 2200.0 | 60.0 | 70.0 | 330.0 | 4.714 | 305.0 | 167.8 | 高 |
| 12 | 2200.0 | 65.0 | 70.0 | 357.5 | 5.107 | 332.5 | 182.9 | 高 |
注意第 1 行:份额 5% 时碳水只有 27.5 g,扣掉 25 g 纤维后净碳水只剩 2.5 g,远低于生酮的 50 g 阈值。纤维是常数,份额越低相对影响越大——极低碳水方案的纤维克数要单独核对,不能照搬 25 g。
结果边界、舍入与适用说明
- 总热量必须大于 0。成年人全天摄入通常落在 1200 到 3500 kcal,低于 800 kcal 的极低热量配方需要医学监督。
- 份额限制在 0 到 100% 之间。0% 是允许的(对应极低碳水方案),但页面会标出它低于下限 45%;100% 也只在算术上成立。
- 体重必须大于 0。它只影响 g/kg 一项。成人体重常见区间 40 到 150 kg,上限放宽到 500 kg 只为容错。
- 膳食纤维不能为负,且不能大于算出的碳水总量。纤维超过碳水时净碳水会被压成 0,营养学上没有意义,页面会直接报错并列出两个数。
- GI 限定在 1 到 110。以葡萄糖等于 100 为基准,超过 110 多半是误用了面包为 100 的旧基准。
- 舍入规则:碳水热量、碳水克数与净碳水保留 1 位小数,g/kg 保留 3 位,占比保留 2 位,GL 保留 1 位。Atwater 因子本身只有 1 位有效精度,更多位数只用于行间比较。全程使用 IEEE-754 双精度浮点,正常输入量级不会触发精度丢失。
- 净碳水的口径存在分歧。本页按「总碳水减膳食纤维」计算;糖醇在部分口径里也要扣除,本页不处理,因为那需要逐项配料表数据。
- 本页结果不等同于膳食处方。130 g 与 50 g 是群体层面的参考值,妊娠期、糖尿病、慢性肾病与生长发育期人群的需求不同。
常见问题
净碳水为什么要把膳食纤维扣掉?
因为膳食纤维虽被计入标签上的「总碳水化合物」,但不被小肠消化酶分解,也不吸收入血,不提供可代谢的葡萄糖。默认示例里 247.5 g 总碳水扣除 25 g 纤维后是 222.5 g 净碳水,占总量 89.90%。
4 kcal/g 准不准?和标签上的热量对不上怎么办?
4 kcal/g 是 Atwater 体系给可利用碳水的平均代谢能,用于估算与配比是够的,但它是平均值:单糖、双糖与淀粉的实际代谢能略有差异,糖醇更低。各国标签还普遍使用简化系数并允许一定误差,所以本页结果与标签有几个百分点的出入属正常。
130 g 和 50 g 这两个阈值分别是什么意思?
两者来源不同。130 g/天 来自膳食营养素参考摄入量,依据是大脑与红细胞对葡萄糖的需求下限,长期低于它会转向酮体供能;50 g/天 则是生酮饮食为维持营养性酮症而采用的经验上限。默认示例 247.5 g 对前者是「达标(高出 117.5 g)」,对后者是「远高于(还差 197.5 g)」,两个结论可以同时成立。
同样的克数,为什么体重不同结论也不同?
因为身体处理碳水的能力与瘦体重、肝糖原储备和运动量挂钩,而这些都随体重变化。同样是 247.5 g,45 kg 的人分摊下来是 5.500 g/kg,接近耐力项目赛前补糖的量级;100 kg 的人只有 2.475 g/kg,属于普通混合饮食的中位水平。判断个体摄入高低要看 g/kg,绝对克数只用于采购与称重。
GI 和 GL 有什么区别?整日 GL 122.4 是不是算错了?
没算错,只是口径不同。GI 描述某种食物升糖有多快,是以葡萄糖为 100 的相对值;GL 描述吃下去这一份实际带来多大负荷,等于 GI 乘以可用碳水克数再除以 100。经典用法针对一份食物,本页把它套到整日的 222.5 g 净碳水上,自然得到 122.4;按三餐均分每餐约 40.8,与单份食物的量级才可比。
份额填 0 或填 100 会怎样?页面为什么不直接拒绝?
0 到 100% 在算术上都有意义,页面照算:0% 得 0 g 碳水,100% 得 550 g 碳水(2200 ÷ 4)。但两者都不在可接受宏量营养素分布范围 45-65% 内,页面会分别标出「低于下限」与「高于上限」。直接拒绝反而让想算极端方案的人拿不到数字。
膳食纤维填得比碳水还多,为什么报错而不是输出 0?
因为净碳水被压成 0 通常意味着数据填反了或单位写错了,比如把每份的纤维当成每日总量。安静地输出 0 会让人误以为方案可行。页面报错时会同时列出纤维克数与算出的碳水总量,方便直接比对。
输入的内容会被上传或记录吗?
不会。全部计算在浏览器本地完成,只使用 JS 的 Number、Math 与字符串格式化,不发任何网络请求,可以在开发者工具的 Network 面板自查;刷新页面后输入即清空,也不写入本地存储。