备赛期最后两周
健美选手小陈在赛前14天,体脂已降到8%,但教练要求再压1.5公斤水分。他不敢按直觉少吃,怕掉肌肉。用本工具输入当前体重、体脂率和每日5次力量训练时长,算出维持肌肉的最低热量窗口为1950大卡,同时按碳循环模式给出每日碳水上限。最后两周每天吃2100大卡,上台时干度达标,大腿血管清晰。
减脂期算不准热量缺口,增肌期吃不够盈余,是多数人卡在体重秤前的原因。输入性别、年龄、身高、体重与活动量,工具基于 Mifflin-St Jeor 公式计算基础代谢,再根据目标(减脂/增肌/维持)给出每日建议摄入。所有计算在浏览器内完成,体重、体脂等数据不上传服务器。
健美选手小陈在赛前14天,体脂已降到8%,但教练要求再压1.5公斤水分。他不敢按直觉少吃,怕掉肌肉。用本工具输入当前体重、体脂率和每日5次力量训练时长,算出维持肌肉的最低热量窗口为1950大卡,同时按碳循环模式给出每日碳水上限。最后两周每天吃2100大卡,上台时干度达标,大腿血管清晰。
40岁程序员空腹血糖6.3,医生让减重5公斤。他试过168断食,但午饭后低血糖手抖。用本工具输入身高175cm、体重82kg、久坐办公,算出基础代谢1650大卡。按减脂目标设定每日摄入1400大卡,工具自动把碳水分配到早餐和午餐,晚餐只留蛋白质和膳食纤维。执行第3天,下午不再心慌,两周后空腹血糖降到5.8。
产后4个月的新手妈妈体重比孕前重12公斤,想减脂又怕奶水不够。儿科医生说每天至少多摄入500大卡才能维持泌乳。她用本工具输入产后体重65kg、哺乳状态,工具自动在基础代谢上叠加500大卡哺乳加成,算出每日维持体重需2200大卡。她按此吃,每周掉0.3公斤,宝宝体重增长曲线正常。
大学生小李卧推卡在60公斤三个月,每天吃四顿但体重不涨。他用本工具输入身高178cm、体重68kg、每周4次力量训练,算出维持体重需2800大卡。按增肌目标设定每日摄入3200大卡,工具给出蛋白质1.8g/kg体重的具体数字——123克。他按此吃两周,体重涨到70kg,卧推突破65公斤。
全马330选手老张赛前3天需要充碳,但平时低碳饮食,突然吃大量碳水怕水肿。他用本工具输入身高172cm、体重62kg、跑量周80公里,算出每日消耗约2900大卡。赛前3天按工具建议把碳水从150g逐步加到400g,同时控制钠摄入。比赛当天体重只涨0.5kg,跑完32公里没有撞墙,最后10公里配速没掉。
| 维度 | 本工具 | MyFitnessPal / 主流 App | 传统手工计算 |
|---|---|---|---|
| 隐私 | 所有计算在浏览器内完成,无数据上传 | 需注册账号,数据存储于云端服务器 | 完全离线,无电子记录 |
| 离线可用 | 浏览器加载后即可离线使用 | 需联网,部分功能离线受限 | 完全离线,依赖纸笔 |
| 计算速度 | 输入即出结果,无延迟 | 需加载页面、登录,约 1-3 秒 | 手动查表、计算,数分钟 |
| 目标设定 | 直接输入目标(减脂/增肌),自动生成推荐摄入 | 需手动设置目标,部分功能需订阅 | 需自行查阅公式和活动系数,手动推算 |
| 收费 | 完全免费,无内购 | 基础免费,高级功能(如宏观追踪)需订阅 | 仅需纸笔,零成本 |
| 数据持久化 | 无存储,关闭页面即清空 | 云端保存历史记录,可长期追踪 | 需手动记录,易丢失 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 性别:男,年龄:30,身高:175cm,体重:75kg,活动量:每周运动3-5天 | 基础代谢:1670 kcal/天,TDEE:2560 kcal/天,减脂摄入:2060 kcal/天,增肌摄入:3060 kcal/天 | 常规:典型中等活动量男性,验证基础代谢和TDEE计算是否合理,活动系数取1.55 |
| 性别:女,年龄:25,身高:165cm,体重:55kg,活动量:久坐少动 | 基础代谢:1360 kcal/天,TDEE:1630 kcal/天,减脂摄入:1130 kcal/天,增肌摄入:2130 kcal/天 | 常规:久坐女性,验证低活动量系数(1.2)下的输出,减脂摄入是否低于1200 kcal(需提示健康风险) |
| 性别:男,年龄:18,身高:180cm,体重:100kg,活动量:每周运动1-3天 | 基础代谢:2180 kcal/天,TDEE:2990 kcal/天,减脂摄入:2490 kcal/天,增肌摄入:3490 kcal/天 | 边界:BMI=30.9(肥胖),验证大体重用户的代谢估算是否合理,活动系数取1.375 |
| 性别:女,年龄:70,身高:155cm,体重:45kg,活动量:每周运动1-3天 | 基础代谢:1050 kcal/天,TDEE:1440 kcal/天,减脂摄入:940 kcal/天,增肌摄入:1940 kcal/天 | 边界:高龄+低体重,验证减脂摄入低于1000 kcal时是否给出健康警告,基础代谢算法对老年人是否适用 |
| 性别:男,年龄:16,身高:170cm,体重:60kg,活动量:每周运动6-7天 | 基础代谢:1640 kcal/天,TDEE:2870 kcal/天,减脂摄入:2370 kcal/天,增肌摄入:3370 kcal/天 | 边界:未成年人(16岁),验证年龄下限是否在算法支持范围内,Mifflin-St Jeor公式对青少年是否适用 |
| 性别:男,年龄:30,身高:175cm,体重:75kg,活动量:无(留空) | 错误提示:活动量不能为空,请选择一项 | 易错:用户可能跳过必选项,验证前端验证逻辑是否拦截空值,而非返回默认值 |
| 性别:女,年龄:25,身高:165cm,体重:55kg,活动量:每周运动3-5天 | 基础代谢:1360 kcal/天,TDEE:2110 kcal/天,减脂摄入:1610 kcal/天,增肌摄入:2610 kcal/天 | 易错:与第2条相比仅活动量不同,验证活动系数切换后TDEE变化是否合理(1.2→1.55,增幅约30%) |
1.把 BMR 当成 TDEE 直接使用
BMR = 1500 kcal,每天就吃 1500 kcalBMR = 1500 kcal,运动系数 1.55 → TDEE = 2325 kcal,减脂吃 1825-2075 kcalBMR 是静息代谢,TDEE 才含日常活动消耗。直接按 BMR 吃会导致过度节食、代谢下降。
2.减脂目标摄入低于 BMR
TDEE = 2000 kcal,减脂目标设为 1200 kcalTDEE = 2000 kcal,减脂缺口 300-500 kcal → 目标摄入 1500-1700 kcal摄入低于 BMR 会触发饥饿模式、流失肌肉。安全缺口不超过 TDEE 的 20-25%。
3.增肌目标摄入超过 TDEE 太多
TDEE = 2000 kcal,增肌目标设为 3000 kcalTDEE = 2000 kcal,增肌盈余 200-400 kcal → 目标摄入 2200-2400 kcal过量盈余主要变脂肪,肌肉合成速率有限。建议每月增重不超过体重的 1-2%。
4.用体重 kg 填身高 cm 字段
身高字段输入 70身高字段输入 170Mifflin-St Jeor 公式中身高单位是 cm,70 会被当成 70cm 导致 BMR 严重偏低。
5.活动系数选错,高估日常消耗
久坐办公室但选了『中等活动(每周 3-5 天运动)』久坐办公室选『基本不动(几乎不运动)』或『轻度活动(每周 1-3 天)』活动系数每档差约 0.2-0.3,选高 1 档会让 TDEE 虚高 300-500 kcal,减脂吃不够缺口。
6.减脂时完全不吃碳水或脂肪
减脂目标 1500 kcal,只吃鸡胸肉和蔬菜减脂目标 1500 kcal,分配:碳水 45-55%(165-206g)、蛋白质 25-30%(94-113g)、脂肪 20-25%(33-42g)极端低碳或低脂会导致激素紊乱、训练无力。工具给出的宏量营养素比例是参考,不应完全剔除某一类。
7.忽略蛋白质摄入下限
减脂目标 1500 kcal,蛋白质只吃 50g减脂目标 1500 kcal,蛋白质至少吃到 1.6g/kg 体重(如 70kg → 112g)减脂期蛋白质不足会加速肌肉流失。建议下限:久坐 1.2g/kg、运动 1.6-2.2g/kg。
8.用『快速减脂』缺口超过 1000 kcal
TDEE = 2500 kcal,快速减脂目标设为 1200 kcal快速减脂缺口控制在 500-800 kcal,目标 1700-2000 kcal超过 1000 kcal 的缺口难以长期坚持,且容易导致暴食反弹、代谢损伤。
TDEE = BMR × AF
BMR基础代谢率,单位 kcal/天AF活动系数,1.2–1.9 之间男性 30 岁、体重 75 kg、身高 178 cm,BMR 用 Mifflin-St Jeor 公式:10×75 + 6.25×178 – 5×30 + 5 = 750 + 1112.5 – 150 + 5 = 1717.5 kcal/天。活动系数取 1.55(中等运动 3–5 天/周),TDEE = 1717.5 × 1.55 ≈ 2662 kcal/天。减脂目标摄入 = TDEE – 500 = 2162 kcal/天。
6 种主流语言实现,复制即用:
import math
def tdee_mifflin_stjeor(weight_kg, height_cm, age, sex, activity):
"""
Mifflin-St Jeor 公式计算基础代谢 (BMR) 与总能量消耗 (TDEE)
weight_kg: 体重 (kg)
height_cm: 身高 (cm)
age: 年龄 (岁)
sex: 'male' 或 'female'
activity: 活动系数 (1.2-1.9)
"""
if sex == 'male':
bmr = 10 * weight_kg + 6.25 * height_cm - 5 * age + 5
else:
bmr = 10 * weight_kg + 6.25 * height_cm - 5 * age - 161
tdee = bmr * activity
return round(bmr, 1), round(tdee, 1)
# 示例:30岁男性,70kg,175cm,轻度活动 (1.375)
bmr, tdee = tdee_mifflin_stjeor(70, 175, 30, 'male', 1.375)
print(f"BMR: {bmr} kcal/day")
print(f"TDEE: {tdee} kcal/day")
# 输出: BMR: 1662.5 kcal/day
# TDEE: 2285.9 kcal/dayfunction tdeeMifflinStJeor(weightKg, heightCm, age, sex, activity) {
// Mifflin-St Jeor 公式,返回 { bmr, tdee }
let bmr;
if (sex === 'male') {
bmr = 10 * weightKg + 6.25 * heightCm - 5 * age + 5;
} else {
bmr = 10 * weightKg + 6.25 * heightCm - 5 * age - 161;
}
const tdee = bmr * activity;
return { bmr: Math.round(bmr * 10) / 10, tdee: Math.round(tdee * 10) / 10 };
}
// 示例:25岁女性,60kg,165cm,中等活动 (1.55)
const result = tdeeMifflinStJeor(60, 165, 25, 'female', 1.55);
console.log(`BMR: ${result.bmr} kcal/day`);
console.log(`TDEE: ${result.tdee} kcal/day`);
// 输出: BMR: 1354.0 kcal/day
// TDEE: 2098.7 kcal/daypackage main
import (
"fmt"
"math"
)
// tdeeMifflinStJeor 计算 BMR 与 TDEE (Mifflin-St Jeor 公式)
func tdeeMifflinStJeor(weightKg, heightCm float64, age int, sex string, activity float64) (bmr, tdee float64) {
if sex == "male" {
bmr = 10*weightKg + 6.25*heightCm - 5*float64(age) + 5
} else {
bmr = 10*weightKg + 6.25*heightCm - 5*float64(age) - 161
}
tdee = bmr * activity
// 保留一位小数
bmr = math.Round(bmr*10) / 10
tdee = math.Round(tdee*10) / 10
return
}
func main() {
// 示例:28岁女性,55kg,160cm,轻度活动 (1.375)
bmr, tdee := tdeeMifflinStJeor(55, 160, 28, "female", 1.375)
fmt.Printf("BMR: %.1f kcal/day\n", bmr)
fmt.Printf("TDEE: %.1f kcal/day\n", tdee)
// 输出: BMR: 1304.0 kcal/day
// TDEE: 1793.0 kcal/day
}interface TdeeResult {
bmr: number;
tdee: number;
}
function tdeeMifflinStJeor(
weightKg: number,
heightCm: number,
age: number,
sex: 'male' | 'female',
activity: number
): TdeeResult {
// Mifflin-St Jeor 公式
const bmr = sex === 'male'
? 10 * weightKg + 6.25 * heightCm - 5 * age + 5
: 10 * weightKg + 6.25 * heightCm - 5 * age - 161;
const tdee = bmr * activity;
return {
bmr: Math.round(bmr * 10) / 10,
tdee: Math.round(tdee * 10) / 10
};
}
// 示例:35岁男性,80kg,180cm,重度活动 (1.725)
const result = tdeeMifflinStJeor(80, 180, 35, 'male', 1.725);
console.log(`BMR: ${result.bmr} kcal/day`);
console.log(`TDEE: ${result.tdee} kcal/day`);
// 输出: BMR: 1770.0 kcal/day
// TDEE: 3053.2 kcal/dayfn tdee_mifflin_stjeor(weight_kg: f64, height_cm: f64, age: i32, sex: &str, activity: f64) -> (f64, f64) {
// Mifflin-St Jeor 公式
let bmr = if sex == "male" {
10.0 * weight_kg + 6.25 * height_cm - 5.0 * age as f64 + 5.0
} else {
10.0 * weight_kg + 6.25 * height_cm - 5.0 * age as f64 - 161.0
};
let tdee = bmr * activity;
// 保留一位小数
let bmr = (bmr * 10.0).round() / 10.0;
let tdee = (tdee * 10.0).round() / 10.0;
(bmr, tdee)
}
fn main() {
// 示例:22岁女性,50kg,155cm,久坐 (1.2)
let (bmr, tdee) = tdee_mifflin_stjeor(50.0, 155.0, 22, "female", 1.2);
println!("BMR: {:.1} kcal/day", bmr);
println!("TDEE: {:.1} kcal/day", tdee);
// 输出: BMR: 1262.5 kcal/day
// TDEE: 1515.0 kcal/day
}<?php
function tdeeMifflinStJeor(float $weightKg, float $heightCm, int $age, string $sex, float $activity): array {
// Mifflin-St Jeor 公式
if ($sex === 'male') {
$bmr = 10 * $weightKg + 6.25 * $heightCm - 5 * $age + 5;
} else {
$bmr = 10 * $weightKg + 6.25 * $heightCm - 5 * $age - 161;
}
$tdee = $bmr * $activity;
return [
'bmr' => round($bmr, 1),
'tdee' => round($tdee, 1)
];
}
// 示例:40岁男性,90kg,185cm,极重度活动 (1.9)
$result = tdeeMifflinStJeor(90, 185, 40, 'male', 1.9);
echo "BMR: {$result['bmr']} kcal/day\n";
echo "TDEE: {$result['tdee']} kcal/day\n";
// 输出: BMR: 1841.2 kcal/day
// TDEE: 3498.3 kcal/day
?>减脂通常建议在TDEE基础上制造300-500大卡的热量缺口。2300的TDEE,减脂期每日摄入可以设为1800-2000大卡。缺口越大掉秤越快,但低于基础代谢(BMR)容易导致代谢下降和肌肉流失。本工具在输出TDEE后,会直接给出减脂和增肌的推荐摄入值,分别对应-300和+300大卡的温和方案,可以直接参考。
TDEE计算除了身高体重,还依赖年龄、性别和活动水平。即使身高体重相同,年龄差10岁基础代谢可能差100-150大卡;性别不同肌肉量差异也会影响BMR。最关键的是活动水平:一个人坐办公室(久坐)和一个人每天走一万步(轻度活动),TDEE可能差300-500大卡。本工具的活动水平分5档,选对档位结果才准。
本工具使用Mifflin-St Jeor公式计算BMR,这是目前临床常用且误差较小的公式之一(约±200大卡)。健身房体测仪(生物电阻抗法)受水分、进食时间影响大,单次测的BMR可能偏差更大。建议把本工具结果作为初始参考值,实际执行2周后根据体重变化率反向调整:每周减0.5-1%体重说明缺口合适,不掉秤则每天再减100大卡。
运动一小时的具体强度决定了档位。如果是一小时快走或瑜伽(低强度),选「轻度活动」;如果是慢跑或健身房器械(中等强度),选「中度活动」;如果是高强度间歇或CrossFit(高强度),选「非常活跃」。本工具每个档位都有文字说明和运动量参考,选错一档可能导致TDEE偏差200-400大卡,直接影响减脂效果。
本工具所有输入字段单位均为公制:体重单位是公斤(kg),身高单位是厘米(cm)。如果平时用市斤(斤),需要先除以2换算成公斤,例如120斤输入60。年龄单位是周岁。如果误将斤当作公斤输入,TDEE计算结果会翻倍失真,建议输入前确认体重秤上的单位。
TDEE和推荐摄入是目标参考值,不是硬性指标。偶尔某天吃少100-200大卡不会有大问题,但长期低于BMR(约TDEE的60-70%)会触发身体的节能模式:代谢下降、疲劳、脱发、女性月经紊乱。减脂期建议最低摄入不低于BMR,本工具结果区同时显示了BMR数值,可以把它作为每日摄入的底线。
本工具增肌推荐是在TDEE基础上+300大卡,这个增量主要用于支持肌肉合成,同时脂肪增长可控。如果超过太多(比如+1000大卡),多余热量会优先转化为脂肪储存,增肌变增肥。建议按推荐值执行,每2周测一次体脂率或腰围:如果腰围增长明显但力量没涨,说明热量盈余过大,需要下调100-200大卡。
年龄直接影响BMR计算:Mifflin-St Jeor公式中,年龄每增加10岁,BMR约下降50-100大卡(因肌肉流失)。输错5岁可能导致TDEE偏差50-150大卡,对减脂影响不大(约等于半碗米饭),但追求精准建议更正。如果忘记具体周岁,可以按最近生日算,不用纠结到月份。
本工具完全在浏览器本地运行,所有输入数据(身高体重年龄等)不会上传到任何服务器。关闭页面后数据自动清除,没有隐私泄露风险。即使断网也能正常计算,适合在无网络环境的健身房或户外使用。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。