身体体脂率计算器

按美国海军(US Navy)围度公式,用腰围、颈围、身高与臀围算出体脂率,系数与性别差异全部摊开;页内同时说明 BIA 体脂秤为什么会给出另一个数。

提示:任意输入框里按 Enter 都会重算;男性不需要臀围,填了也会被忽略。

使用方法

  1. 先选性别。男与女用的是两套不同的系数:男性只吃「腰围 − 颈围」,女性吃「腰围 + 臀围 − 颈围」,选错性别结果会差十个百分点以上。
  2. 量腰围:男性量肚脐水平一圈,女性量腰部最细处;皮尺贴身不勒紧,在正常呼气末读数。默认填的是示例值 84。
  3. 量颈围:皮尺放在喉结下方,水平一圈,不要收紧。默认 38。
  4. 女性再量臀围:臀部最丰满处水平一圈,默认 98。男性这一项会被直接忽略。
  5. 填身高与体重,默认 172 / 70。身高参与公式本体,体重只用来把体脂率折算成去脂体重与脂肪重量。
  6. 点「计算体脂率」,或者在任意输入框里按 Enter。四张卡片给出体脂率、去脂体重、脂肪重量与 ACE 参考区间。
  7. 再往下是男性腰围 70~108 cm 的对照表,每 2 cm 一档共 20 行,默认显示 12 行;「导出 CSV」得到带 BOM 的表格,「复制对照表」把整表以制表符放进剪贴板。

这个体脂率计算器能解决什么问题

一是不靠仪器估一个体脂率。一根皮尺、四个围度,就能得到美国海军用了很多年的那个估计值。它的输入全是长度,不需要电极、不需要空腹、不需要赤脚站在金属板上。

二是把对数系数摊开给你看。市面上多数页面只给一个结果,不告诉你系数是多少、为什么男女公式长得不一样。本页把 0.19077、0.35004、0.15456、0.22100 这四个系数和两个常数项都写在下面,你可以自己拿计算器对一遍。

三是顺手得到去脂体重。体脂率本身不能直接用于计算,很多式子要的是去脂体重(LBM)。本页把体重一起收了进来,直接给出 LBM 与脂肪重量,省得再换算一次。

四是解释为什么体脂秤给出另一个数。BIA 体脂秤测的是电阻抗,再用厂家内置的回归式换算,同一个人的早晚读数能差好几个百分点。本页把误差来源逐条列出,让你知道两个数不一致时该信哪一个、该看什么。

本页不做这些事:不给减脂计划、不判断是否超重、不做体成分检测、不算每日热量需求。它只输出一个由围度估计出来的百分比。

计算原理:美国海军法围度公式与性别差异

公式本体(公制,围度单位 cm):两个式子的结构完全一样,都是「先算一个分母,再用 495 除,最后减 450」。这个 495 / 分母 − 450 的写法来自把密度换回百分比的那一步,常数 495 与 450 是这套公式的固有部分,不能拆开单独改动。

性别公式
男BF% = 495 ÷ (1.0324 − 0.19077 × log10(腰围 − 颈围) + 0.15456 × log10(身高)) − 450
女BF% = 495 ÷ (1.29579 − 0.35004 × log10(腰围 + 臀围 − 颈围) + 0.22100 × log10(身高)) − 450

log10 就是底数为 10 的常用对数,在 JavaScript 里对应 Math.log10。用对数而不是直接用长度,是因为体脂率对围度的响应是「递减的」:腰围从 80 涨到 90 带来的变化,明显大于从 100 涨到 110。对数项正好承担了这种压缩。

性别差异有三处,不是一处。第一,自变量不同:男性只有「腰围 − 颈围」这一项,女性是「腰围 + 臀围 − 颈围」,多了一个臀围。第二,系数不同:腰腹那一项的系数男性是 0.19077、女性是 0.35004,差了将近一倍;身高项是 0.15456 对 0.22100。第三,常数项不同:分母的基准值男性 1.0324、女性 1.29579。这三处叠加起来,才需要两套独立公式。用默认的腰 84、颈 38、身高 172 实测:男性 16.7%,女性在臀围 98 时是 28.6%——同一组围度,选错性别会差 11.9 个百分点。

为什么女性多一个臀围项。脂肪分布有明显性别差异,女性的脂肪更多沉积在臀部与大腿,只量腰围不足以刻画。加进臀围后,「腰 + 臀 − 颈」这个量在女性身上的区分度明显提高。反过来,男性把臀围加进去反而会削弱公式,所以男性公式里没有它——这也是本页对男性直接忽略臀围输入的原因。

量出来的是 cm,公式也认 inch。同一套方法还有英制版本,男性 86.010 × log10(腰 − 颈) − 70.041 × log10(身高) + 36.76,女性 163.205 × log10(腰 + 臀 − 颈) − 97.684 × log10(身高) − 78.387,围度单位是英寸。把默认示例换算过去(84/2.54 = 33.07、38/2.54 = 14.96、172/2.54 = 67.72)算出来同样是 16.7%,两套常数是自洽的;女性示例两套相差 0.3 个百分点,来自常数本身只保留到小数点后若干位。本页统一用公制那套,避免来回换算时引入新的舍入。

中间量只有三个:腰颈差(或腰臀颈差)、它的常用对数、身高与体脂率的常用对数。以默认男性为例,腰颈差 = 84 − 38 = 46,log10(46) = 1.6628,乘 0.19077 得 0.3172;log10(172) = 2.2355,乘 0.15456 得 0.3455。分母 = 1.0324 − 0.3172 + 0.3455 = 1.0607,495 ÷ 1.0607 = 466.7,减 450 得 16.7%。整条链路只有对数、乘加和一次除法。

去脂体重怎么来。公式只给百分比,本页再用体重做一次换算:去脂体重 = 体重 × (1 − 体脂率),脂肪重量 = 体重 × 体脂率。默认 70 kg、16.7% 对应去脂体重 58.3 kg、脂肪重量 11.7 kg。注意这一步依赖体重输入的准确性,而体脂率本身不依赖体重——所以哪怕体重填错,卡片第一行的体脂率也不会变。

参考区间来自美国运动委员会(ACE)的公开分类表:男性必需脂肪 2~5%、运动员 6~13%、健身 14~17%、一般 18~24%、肥胖 25% 及以上;女性对应 10~13%、14~20%、21~24%、25~31%、32% 及以上。这些区间是划分标准,不是本页算出来的数字,只用于给结果一个位置感。

完整示例(数值仅作演示)

示例条件与这个体脂率计算器打开时的默认值完全一致:男性、腰围 84 cm、颈围 38 cm、臀围 98 cm、身高 172 cm、体重 70 kg(男性忽略臀围)。

换成女性示例 腰围 76、颈围 32、臀围 98、身高 163、体重 58:腰臀颈差 = 76 + 98 − 32 = 142,log10(142) = 2.1523,× 0.35004 = 0.7534;log10(163) = 2.2122,× 0.22100 = 0.4889;分母 = 1.29579 − 0.7534 + 0.4889 = 1.0313,495 ÷ 1.0313 = 480.0,减 450 得 30.0%,去脂体重 40.6 kg、脂肪重量 17.4 kg,落在 ACE 的一般区间(25~31%)。对照表里「84 cm」那一行显示的就是 16.7%,与控件默认值和本段文字用的是同一组数字,可以互相核对。

腰围档位与体脂率对照表

下表固定男性、颈围 38 cm、身高 172 cm,只让腰围从 70 cm 走到 108 cm,每 2 cm 一档共 20 行。第三列的体脂率只随腰颈差变化,腰围每加 2 cm 结果就往上走一档,升幅却是递减的:70→72 cm 那一档升 2.1 个百分点,106→108 cm 那一档只升 1.1 个百分点,整列升幅落在 1.1~2.1 之间。这正是对数项在起作用——腰围的绝对增量相同,对体脂率的推动却越来越小。

腰围腰围 − 颈围体脂率ACE 参考区间
70 cm323.8%必需脂肪 2~5%
72 cm345.9%必需脂肪 2~5%
74 cm367.9%运动员 6~13%
76 cm389.8%运动员 6~13%
78 cm4011.6%运动员 6~13%
80 cm4213.4%运动员 6~13%
82 cm4415.0%健身 14~17%
84 cm4616.7%健身 14~17%
86 cm4818.2%一般 18~24%
88 cm5019.7%一般 18~24%
90 cm5221.2%一般 18~24%
92 cm5422.6%一般 18~24%
94 cm5623.9%一般 18~24%
96 cm5825.3%肥胖 25% 及以上
98 cm6026.6%肥胖 25% 及以上
100 cm6227.8%肥胖 25% 及以上
102 cm6429.0%肥胖 25% 及以上
104 cm6630.2%肥胖 25% 及以上
106 cm6831.4%肥胖 25% 及以上
108 cm7032.5%肥胖 25% 及以上

读表时注意两件事。第一,腰围本身是绝对值,「腰围 − 颈围」才是公式的自变量,所以颈围一变整列都会平移:把颈围从 38 改成 39,同样 84 cm 的腰围会从 16.7% 掉到 15.9%。第二,身高也在公式里,把身高从 172 改成 180,84 cm 腰围会从 16.7% 降到 15.3%——高个子在同样腰围下被算出的体脂率更低。

输入范围、边界与 BIA 体脂秤的误差来源

先说本页的硬边界。腰围 30~200 cm、颈围 15~100 cm、臀围 40~250 cm、身高 100~250 cm、体重 20~300 kg,全部可带一位小数。更关键的是公式的定义域:对数项要求「腰围 − 颈围」严格大于 0,女性还要求「腰围 + 臀围 − 颈围」严格大于 0。如果腰围小于或等于颈围,log10 的自变量变成 0 或负数,结果会是 −Infinity 或 NaN;本页会直接拦住并指出是哪一项,而不是显示一个荒唐的数字。同理,算出来的体脂率若落在合理区间之外(本页按 3%~60% 判定),也会提示你检查腰围与颈围是不是填反了。

围度法的误差来源。一是测量位置:男性腰围有量肚脐水平、也有量髂嵴上缘的,两者能差 2~3 cm,换算到体脂率就是 1.5~2 个百分点。二是呼吸相位:吸气末和呼气末读数不同,规范是在正常呼气末。三是皮尺松紧:勒紧 1 cm 就等于少算将近 1 个百分点。四是颈围位置:放在喉结上方会明显偏小,直接抬高体脂率读数。

再说 BIA 体脂秤。生物电阻抗分析(Bioelectrical Impedance Analysis)的原理是给身体通一路微小电流,测阻抗,再用厂家内置的回归式反推体脂率。它测的是「电导能力」,不是脂肪本身。误差来源至少有这些:水合状态——脱水时阻抗升高、体脂率被算高,刚喝完水又会被算低;进食与运动——餐后和剧烈运动后血液重新分布,读数会漂;皮肤温度与电极接触——脚底干燥程度、是否刚洗完澡都会影响阻抗;体位——站着测与躺着的电流路径不同;内置方程——不同品牌、不同型号用的回归式和人群样本都不一样,同一时刻两台秤差几个百分点很常见。综合起来,家用 BIA 秤与参考方法之间差 ±3~5 个百分点属于常态,而且它给出的是「估计值」而不是「测量值」。

参考方法是什么。体成分研究里常用的参考是 DXA(双能 X 线吸收法),实验室金标准则是四室模型(4-compartment model)。两者都需要专用设备,不在家用范围内。所以实践上的建议是:把同一种方法、同一个时间点的读数连成一条线看趋势,早上空腹、排尿后、同一台设备、同一个姿势,两次之间比绝对值更有意义;换方法、换设备之后的单点比较基本没有信息量。

本页不是医疗建议。它输出的是一个由围度估计出来的百分比,不能用于诊断,也不能替代体成分检测或医生的个体化评估。正在服药、有代谢疾病、处于孕期或哺乳期的人,请以临床评估为准。

常见问题

为什么男性和女性要用两套公式?

因为脂肪分布不同,而且不止差一个常数。男性公式只吃「腰围 − 颈围」,系数 0.19077;女性吃「腰围 + 臀围 − 颈围」,系数 0.35004,分母基准也从 1.0324 变成 1.29579。同样腰 84、颈 38、身高 172,男性算出 16.7%、女性(臀 98)算出 28.6%,差 11.9 个百分点,所以性别一定不能选错。

体脂秤和这个体脂率计算器差了好几个百分点,该信哪个?

两个都是估计值,谁也不算「准」。围度法的误差主要来自皮尺位置与松紧,BIA 的误差主要来自水合状态、进食与内置方程,家用 BIA 与参考方法差 ±3~5 个百分点是常态。实用的做法是固定一种方法看趋势,不要拿两种方法的单次读数互相比较。

腰围要量哪个位置?

男性量肚脐水平一圈,女性量腰部最细处,都在正常呼气末读数,皮尺贴身但不勒紧。这个差别不小:肚脐水平与髂嵴上缘能差 2~3 cm,换算到体脂率就是 1.5~2 个百分点。量之前把位置记下来,下次量同一处,趋势才有可比性。

为什么身高变高,体脂率反而变低?

因为身高在分母里带正号,系数是 +0.15456(女性 +0.22100)。同样 84 cm 腰围、38 cm 颈围,身高 172 算出 16.7%,身高 180 算出 15.3%。公式的隐含逻辑是:更高的人,同样的腰围对应更小的相对围度,所以估计出的体脂率更低。

去脂体重和脂肪重量怎么算出来的?

体脂率只管百分比,本页用体重做一次换算:去脂体重 = 体重 × (1 − 体脂率),脂肪重量 = 体重 × 体脂率。默认 70 kg、16.7% 对应 58.3 kg 与 11.7 kg。注意体脂率本身不含体重,所以体重填错只会影响后两行,第一行不受影响。

腰围一栏填得比颈围还小会怎样?

公式会直接失效。对数项的自变量是「腰围 − 颈围」,等于 0 时 log10 得 −Infinity,小于 0 时得 NaN,两者都算不出正常结果。本页会拦住这种情况并指出是腰围与颈围哪一项有问题,同时提示检查是不是把两个数填反了。

这个结果能当体检结论用吗?

不能。它是由四个长度围度估计出来的百分比,误差量级有好几个百分点,既不诊断也不分级。ACE 那套区间只用来给结果一个位置感,不是临床判定标准。需要准确的体成分评估,请用 DXA 或实验室方法,或直接咨询医生。

我填的数据会被上传吗?

不会。这个体脂率计算器全部在浏览器本地做对数与四则运算,没有任何网络请求,也不写入浏览器存储;刷新页面后输入框会回到默认的 84 / 38 / 98 / 172 / 70 与男性。想验证可以打开开发者工具的 Network 面板,点几次「计算体脂率」看有没有请求发出。

相关工具