体脂肪率計算機
U.S. Navy法を用いて体脂肪率を推定。
体脂肪計算機は、高価な器具を必要としない検証された測定方法を使用して体脂肪率を推定します。ここで使用される最も一般的なアプローチは米国海軍方式で、首、ウエスト、ヒップの周囲測定と身長を使用して脂肪質量を推定します。BMIとは異なり、体脂肪率は脂肪と除脂肪体重の実際の組成をより直接的に示します。
性別、身長、必要な周囲測定をセンチメートルまたはインチで入力します。ツールは推定体脂肪率を計算し、米国運動協議会(ACE)が設定した年齢と性別による健康範囲と比較します。
体脂肪率はBMIだけよりも優れたフィットネス指標と見なされますが、誤差があります — 標準はDEXAスキャンと水中体重測定で、医療施設で利用できます。
よくある質問
コード実装
import math
def navy_body_fat_male(waist_cm: float, neck_cm: float, height_cm: float) -> float:
"""
US Navy body fat formula for males.
%BF = 86.010 * log10(waist - neck) - 70.041 * log10(height) + 36.76
"""
return 86.010 * math.log10(waist_cm - neck_cm) - 70.041 * math.log10(height_cm) + 36.76
def navy_body_fat_female(waist_cm: float, hip_cm: float, neck_cm: float, height_cm: float) -> float:
"""
US Navy body fat formula for females.
%BF = 163.205 * log10(waist + hip - neck) - 97.684 * log10(height) - 78.387
"""
return 163.205 * math.log10(waist_cm + hip_cm - neck_cm) - 97.684 * math.log10(height_cm) - 78.387
def classify_body_fat_male(bf_percent: float) -> str:
if bf_percent < 6: return "Essential fat"
if bf_percent < 14: return "Athletes"
if bf_percent < 18: return "Fitness"
if bf_percent < 25: return "Acceptable"
return "Obese"
def classify_body_fat_female(bf_percent: float) -> str:
if bf_percent < 14: return "Essential fat"
if bf_percent < 21: return "Athletes"
if bf_percent < 25: return "Fitness"
if bf_percent < 32: return "Acceptable"
return "Obese"
# Male example
waist, neck, height = 85.0, 37.5, 178.0
bf_male = navy_body_fat_male(waist, neck, height)
print(f"Male example: waist={waist}cm, neck={neck}cm, height={height}cm")
print(f" Body fat: {bf_male:.1f}% ({classify_body_fat_male(bf_male)})")
# Female example
waist_f, hip_f, neck_f, height_f = 72.0, 95.0, 33.5, 165.0
bf_female = navy_body_fat_female(waist_f, hip_f, neck_f, height_f)
print(f"\nFemale example: waist={waist_f}cm, hip={hip_f}cm, neck={neck_f}cm, height={height_f}cm")
print(f" Body fat: {bf_female:.1f}% ({classify_body_fat_female(bf_female)})")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.