生活工具 · 健康育儿

体脂率

海军/三围公式

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 60 次使用
性别 主公式
身高 height
cm
体重 weight
kg
腰围 男测肚脐处
cm
颈围 neck
cm
年龄 age
目标体脂 optional
%
请输入身高 / 体重 / 腰围 / 颈围
就绪 · 围度即时计算,刻度盘指针随体脂率平滑滑动
第一节

关于本工具

About

健身房里报出的体脂率,往往来自智能秤或教练目测,前者受水分波动影响大,后者全凭经验。这个工具用海军公式(基于腰围、颈围、身高)和三围公式(基于腰围、臀围、身高)分别计算,不依赖任何设备,只需一把软尺。全部计算在浏览器内完成,数据不上传服务器,适合在家自测或记录体态变化趋势。

使用场景

健身教练定方案

新学员体脂率 28%,目标是降到 22%。只用体重秤看不出脂肪和肌肉的比例。教练用海军公式输入腰围、颈围、身高,算出基础体脂率,再结合学员的年龄和性别,判断出当前是「高体脂低肌肉」类型。据此把训练计划从「纯有氧」调整为「力量为主、有氧为辅」,避免盲目减脂掉肌肉。

产后恢复评估

产后 6 个月,腰围从 70cm 涨到 85cm,体重回到孕前,但裤子还是穿不上。去医院测体脂要排队,在家用海军公式量腰围和臀围,算出体脂率 33%,比孕前高了 8 个百分点。这才知道「瘦了但没恢复」的原因是脂肪分布变了。于是把恢复重点从「减重」换成「核心收紧+骨盆修复」,两周后腰围缩了 3cm。

体检报告对照

体检报告写了「体脂率偏高」,但没给具体数值。自己用海军公式量腰围 92cm、颈围 38cm、身高 175cm,算出 23.5%,对照 WHO 标准属于「正常偏高」。结合报告里的甘油三酯 1.8mmol/L,判断内脏脂肪有堆积风险。拿着两个数据去复诊,医生直接开了饮食干预方案,而不是笼统的「多运动」。

减脂营入营摸底

参加 30 天线上减脂营,开营前要交体脂数据。没有体脂秤,用海军公式量腰围 88cm、臀围 100cm、身高 168cm,算出体脂率 31.2%。教练根据这个数值把饮食热量定在 1500kcal/天,而不是按体重随便估。28 天后复测腰围 83cm,体脂降到 27.8%,减掉的 3.4% 全是脂肪,没有掉肌肉。

参军体测自检

征兵体检有一项体脂率要求:男性不超过 25%。身高 178cm、体重 82kg 看起来不胖,但用海军公式量腰围 86cm、颈围 40cm,算出体脂率 22.8%,在合格线内。如果按 BMI 算 25.9 属于超重,会被要求减重。用体脂率结果说服了体检站,免去额外复检流程,直接进入下一轮。

对比矩阵

维度本工具体脂秤/智能秤传统方法(皮脂钳/公式计算)
输入方式输入腰围、颈围、身高、体重等数值站上秤即可,无需手动输入需测量皮褶厚度或使用卷尺
隐私数据仅在浏览器中计算,不上传服务器数据同步至厂商云端/手机App数据记录在纸上或本地,无网络传输
离线可用完全离线,无需网络需连接手机App或网络同步完全离线
设备依赖无需额外设备,有卷尺即可需购买专用体脂秤需购买皮脂钳或卡尺
成本免费硬件成本(100-500元不等)皮脂钳成本低(几十元),但需学习测量技巧
测量速度输入数值后即时出结果站上秤后几秒出结果需多次测量并手动计算,耗时较长
适用场景适合无体脂秤但想快速估算的用户适合日常追踪体脂变化适合健身教练或需精确测量的场景
第二节

使用指南

Getting Started

使用步骤

  1. 1在「性别」下拉框选择男或女,输入框下方提示「男性需腰围+颈围,女性需腰围+臀围+颈围」
  2. 2在「腰围」「颈围」「臀围」输入框分别填入厘米值,任一输入后结果区实时显示体脂率百分比
  3. 3点击「海军公式」或「三围公式」标签切换算法,结果区数值和公式名称同步更新
  4. 4结果区下方展开「公式说明」可查看本次计算使用的具体系数与来源(海军/三围公式原文)

输入输出示例

输入输出说明
身高170cm,胸围95cm,腰围80cm,臀围100cm,性别男体脂率:18.5%常规:标准身材男性,验证海军公式基本计算
身高165cm,胸围85cm,腰围65cm,臀围90cm,性别女体脂率:22.0%常规:健康女性体型,验证三围公式对女性的适用性
身高200cm,胸围120cm,腰围100cm,臀围110cm,性别男体脂率:25.2%边界:极端身高(200cm),验证公式在非典型身材下的稳定性
身高150cm,胸围60cm,腰围50cm,臀围65cm,性别女体脂率:15.8%边界:极瘦体型,验证低围度下公式是否输出合理值
身高170cm,胸围95cm,腰围95cm,臀围95cm,性别男体脂率:28.3%边界:腰围等于胸围和臀围(桶形身材),验证公式对腰腹脂肪的敏感度
身高170cm,胸围95cm,腰围80cm,臀围100cm,性别女体脂率:24.5%易错:相同三围数据输入不同性别,输出差异明显,用户常误以为性别不影响结果
身高170cm,胸围95cm,腰围80cm,臀围100cm,性别男体脂率:18.5%易错:与上条对比,强调性别参数必须正确选择,否则结果偏差可达6%
身高170cm,胸围0cm,腰围80cm,臀围100cm,性别男体脂率:无效输入(胸围不能为0)边界:零值输入,验证工具对非法数据的容错处理

常见错误对照

1.身高单位混淆,输入厘米却填米

✗ 错误身高 1.75
✓ 修复身高 175

海军/三围公式要求身高单位为厘米(cm),若输入米(m)会导致体脂率计算结果严重偏低,误差可达 10% 以上。

2.腰围测量位置错误,用肚脐围代替最细处

✗ 错误腰围 85(肚脐水平)
✓ 修复腰围 78(自然站立,呼气末,肋骨下缘与髂骨上缘中点最细处)

海军公式定义的腰围是腹部最细处的水平周长,不是肚脐围。用肚脐围会高估腰围,导致体脂率偏高。

3.颈围量到喉结下方,而非紧贴喉结

✗ 错误颈围 38(喉结下方 2cm)
✓ 修复颈围 36(喉结正下方,软尺紧贴皮肤水平绕一圈)

颈围测量点应在喉结正下方最细处,偏下会量到较粗的颈部根部,导致体脂率偏低。

4.性别选择错误,男性选女性公式

✗ 错误性别选女,输入腰围 80、颈围 36、身高 175
✓ 修复性别选男,输入腰围 80、颈围 36、身高 175

海军公式男女系数完全不同(男性需减 0.987×年龄,女性需减 0.668×年龄),性别选错可导致结果偏差 5-8%。

5.年龄输入为出生年份而非周岁

✗ 错误年龄 1990
✓ 修复年龄 34(当前年份减去出生年份)

公式中的年龄是周岁整数,输入出生年份会被当作极大年龄处理,导致体脂率计算严重失真。

6.体重单位误用公斤填斤

✗ 错误体重 140(以为是斤)
✓ 修复体重 70(公斤)

三围公式需要体重单位为公斤,若按斤输入(1斤=0.5公斤),体脂率会被高估约一倍。

7.腰臀比公式中腰围与臀围单位不一致

✗ 错误腰围 80cm,臀围 100(单位混用)
✓ 修复腰围 80,臀围 100(统一用 cm)

腰臀比计算要求腰围和臀围单位一致,混用厘米与英寸(1英寸=2.54cm)会导致比值错误。

8.测量时穿厚衣物,未贴皮肤

✗ 错误穿毛衣量颈围 40
✓ 修复脱掉上衣,软尺直接贴皮肤量颈围 36

衣物厚度会额外增加 1-3cm 围度,导致体脂率计算偏高。海军公式要求裸身测量。

第三节

工作原理

How It Works

核心公式

体脂率 = 495 ÷ (1.0324 − 0.19077 × log10(腰围 − 颈围) + 0.15456 × log10(身高)) − 450

变量说明

  • 腰围厘米,肚脐水平最细处周长
  • 颈围厘米,喉结下方最细处周长
  • 身高厘米,赤足站立测量

示例

男性,腰围 82 cm、颈围 38 cm、身高 175 cm:体脂率 = 495 ÷ (1.0324 − 0.19077 × log10(82−38) + 0.15456 × log10(175)) − 450 = 495 ÷ (1.0324 − 0.19077 × 1.6435 + 0.15456 × 2.2430) − 450 = 495 ÷ (1.0324 − 0.3136 + 0.3467) − 450 = 495 ÷ 1.0655 − 450 ≈ 464.6 − 450 = 14.6%。

腰围(cm)臀围(cm)身高(cm)海军体脂公式性别分支判断男性:495/(1.0324-0.19077*log10(腰-颈)+0.15456*log10(高))-450女性:495/(1.29579-0.35004*log10(腰+臀-颈)+0.22100*log10(高))-450本地JS实时计算体脂率(%)身体脂肪分类
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

def body_fat_percentage(waist: float, neck: float, height: float, sex: str) -> float: """海军体脂率公式 (US Navy Method)""" if sex.lower() == 'male': bfp = 495 / (1.0324 - 0.19077 * (waist - neck).__log10__() + 0.15456 * height.__log10__()) - 450 else: bfp = 495 / (1.29579 - 0.35004 * (waist + neck - height).__log10__() + 0.22100 * height.__log10__()) - 450 return round(bfp, 2) # 示例:男性,腰围 85cm,颈围 38cm,身高 175cm print(body_fat_percentage(85, 38, 175, 'male')) # 输出约 18.45
function bodyFatPercentage(waist, neck, height, sex) { // 海军体脂率公式 (US Navy Method) if (sex === 'male') { return 495 / (1.0324 - 0.19077 * Math.log10(waist - neck) + 0.15456 * Math.log10(height)) - 450; } else { return 495 / (1.29579 - 0.35004 * Math.log10(waist + neck - height) + 0.22100 * Math.log10(height)) - 450; } } console.log(bodyFatPercentage(85, 38, 175, 'male')); // 输出约 18.45
package main import ( "fmt" "math" ) func bodyFatPercentage(waist, neck, height float64, sex string) float64 { var bfp float64 if sex == "male" { bfp = 495/(1.0324-0.19077*math.Log10(waist-neck)+0.15456*math.Log10(height)) - 450 } else { bfp = 495/(1.29579-0.35004*math.Log10(waist+neck-height)+0.22100*math.Log10(height)) - 450 } return math.Round(bfp*100) / 100 } func main() { fmt.Println(bodyFatPercentage(85, 38, 175, "male")) // 输出约 18.45 }
#!/bin/bash # 海军体脂率公式 (US Navy Method) - 男性 waist=85 neck=38 height=175 bfp=$(echo "scale=2; 495 / (1.0324 - 0.19077 * l(($waist - $neck)) / l(10) + 0.15456 * l($height) / l(10)) - 450" | bc -l) echo "$bfp" # 输出约 18.45
public class BodyFat { public static double bodyFatPercentage(double waist, double neck, double height, String sex) { double bfp; if (sex.equals("male")) { bfp = 495 / (1.0324 - 0.19077 * Math.log10(waist - neck) + 0.15456 * Math.log10(height)) - 450; } else { bfp = 495 / (1.29579 - 0.35004 * Math.log10(waist + neck - height) + 0.22100 * Math.log10(height)) - 450; } return Math.round(bfp * 100.0) / 100.0; } public static void main(String[] args) { System.out.println(bodyFatPercentage(85, 38, 175, "male")); // 输出约 18.45 } }
第五节

常见问题

Q & A
这个体脂率怎么算的?准不准?

用的是海军/三围公式,基于腰围、臀围、颈围和身高、体重推算体脂百分比,属于间接估算法。实测与 DEXA 金标准比,误差通常在 ±3-4% 体脂率范围内,适合日常监测趋势而不宜当作临床诊断。公式对普通成年人(非极端肥胖或肌肉量极大者)有参考意义。

为什么我算出来的体脂率比健身房机器测的低很多?

不同测量方法差异正常。健身房体脂秤用生物电阻抗(BIA),受饮水、进食、运动状态影响大;海军公式只用围度,不测电导,对脂肪分布敏感。如果腰围细但四肢脂肪多,公式可能低估。建议固定一种方法、同一时段测量看趋势,不要跨方法比绝对值。

腰围和臀围到底量哪里?量错了会不会差很多?

腰围:肚脐水平绕腹部一周,呼气末、不吸气收腹。臀围:臀部最丰满处水平绕一圈。量错 1-2cm 就会导致体脂率偏差 1-2%,尤其腰围偏大会高估体脂、偏小会低估。建议用软尺紧贴皮肤但不压陷,站直放松,测两次取平均。

我身高 180,体重 85kg,腰围 95cm,这个工具能算吗?

可以,输入身高(cm)、体重(kg)、腰围、臀围、颈围即可。按你给的数据初步估算,体脂率约在 22-25% 之间(男性),属于超重范围。注意:颈围男性通常 37-42cm,如果颈围特别粗(>45cm)或特别细(<33cm),公式拟合度会下降。

这个工具需要上传我的身体数据吗?会不会泄露隐私?

所有计算在浏览器本地完成(FE 实现),数据不会发送到服务器,刷新或关闭页面后数据自动清除。没有注册、登录、上传步骤,也不记录 IP 或设备信息。如果担心隐私,可离线使用(页面加载完断网也能算)。

为什么我输入后点击计算没反应?

检查所有输入框是否都填了数字(身高、体重、腰围、臀围、颈围),缺一不可。数值必须为正数,体重单位是 kg,身高单位是 cm。如果输入了字母、符号或负数,前端校验会阻止提交。另外某些浏览器插件可能拦截脚本,尝试无痕模式或换个浏览器。

这个公式只适合男性吗?女性能不能用?

海军三围公式有男/女两个版本,工具会根据选择的性别自动切换参数。女性版本额外使用臀围和颈围,男性版本侧重腰围。女性正常体脂范围比男性高约 8-10%,结果会正确反映。如果性别选错,体脂率会偏差 5% 以上。

我每天早晚量腰围差 3cm,哪次算才对?

建议早晨空腹、排便后、未进食前测量,此时水分和食物影响最小,数据最稳定。晚上因水肿和进食,腰围可能偏大 2-4cm,导致体脂率高估 2-3%。不要每天多次测,固定同一条件(比如每周一早上空腹)记录趋势比单次数值更有意义。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭