数学在批处理中关闭
math is off in Batch
我一直在尝试为同事设置一个简单的体重计算器。我知道互联网上有很多,但我希望他们能享受来自内部的东西。
我目前在使用我的统计信息时遇到两个问题。
我的体重是 180 我的身高是 60 我的年龄是 42.
我用现在的公式年龄+(6.23 x 身高)+(12.7 x 体重)-(6.76 x 年龄)
第一部分应该显示 1121 但计算的是 1080
第二部分应该显示 762 而是计算 720
第三部分应该显示 284 而不是 252
我也遇到操作数问题或缺少运算符问题,希望能有一点希望。最终我将把女性的计算也包括进去,然后给它一个漂亮的小前端。将不胜感激。
到目前为止,这是我的代码。
@echo off
setlocal enabledelayedexpansion
:age
Set /p age= What is your age?:
SET /P ANSWER= you entered %age% is this correct? (Y/N)?
if /i {%ANSWER%}=={y} (goto :weight)
if /i {%ANSWER%}=={yes} (goto :weight)
if /i {%ANSWER%}=={n} (goto :age)
if /i {%ANSWER%}=={no} (goto :age)
:weight
Set /p weight= What is your weight?:
SET /P ANSWER= you entered %weight% is this correct? (Y/N)?
if /i {%ANSWER%}=={y} (goto :height)
if /i {%ANSWER%}=={yes} (goto :height)
if /i {%ANSWER%}=={n} (goto :weight)
if /i {%ANSWER%}=={no} (goto :weight)
:height
Set /p height= What is your Height in Inches?:
SET /P ANSWER= you entered %height% is this correct? (Y/N)?
if /i {%ANSWER%}=={y} (goto :calcs)
if /i {%ANSWER%}=={yes} (goto :calcs)
if /i {%ANSWER%}=={n} (goto :height)
if /i {%ANSWER%}=={no} (goto :height)
:calcs
set /A calc1= %weight%*6.23
echo weight = %calc1%
set /A calc2= %height%*12.7
echo height = %calc2%
set /A calc3= %age%*6.76
set /A calc4= %age%+%calc1%
echo age = %calc3%
set /A calc5 = %calc4%+%calc2%
set /A Result= %calc5%-%calc3%
echo your caloric intake should be %Result%
虽然SET /A
命令只能管理整数,但是在批处理文件中有几种方法可以进行浮点算术运算,甚至三角函数和对数!但是,你只需要一个非常简单的小数点后两位的运算就可以这样实现:
:calcs
set /A Result=( age + height*623 + weight*1270 - age*676 + 50 ) / 100
echo your caloric intake should be %Result%
请注意,+ 50
相当于在最后的总和上加 0.5。
所以问题的完整答案是这样的。
我原来的方程式使用小数,Aacini 指出这是行不通的。所以他加上 +50 来补偿小数点,使它们成为整数。然后在最后除以 100,去掉两位小数。
这是发送过来的版本,效果更好。
set /A Result=( age + height*623 + weight*1270 - age*676 + 50 ) / 100
age 被替换为 + 66 并移至末尾以进行适当的计算。可能不需要额外的括号,但想确定一下。
set /A MResult=( (%weight%*623) + (%height%*1270) - (%age%*676) + 50 ) / 100 + 66
年龄(对于女性)被替换为 655 并移到了末尾,这个等式很管用。
set /A FResult=((%weight%*435) + (%height%*470) - (%age%*470) + 50 ) / 100 + 655
感谢 Aacini 的帮助
我一直在尝试为同事设置一个简单的体重计算器。我知道互联网上有很多,但我希望他们能享受来自内部的东西。
我目前在使用我的统计信息时遇到两个问题。
我的体重是 180 我的身高是 60 我的年龄是 42.
我用现在的公式年龄+(6.23 x 身高)+(12.7 x 体重)-(6.76 x 年龄)
第一部分应该显示 1121 但计算的是 1080 第二部分应该显示 762 而是计算 720 第三部分应该显示 284 而不是 252
我也遇到操作数问题或缺少运算符问题,希望能有一点希望。最终我将把女性的计算也包括进去,然后给它一个漂亮的小前端。将不胜感激。
到目前为止,这是我的代码。
@echo off
setlocal enabledelayedexpansion
:age
Set /p age= What is your age?:
SET /P ANSWER= you entered %age% is this correct? (Y/N)?
if /i {%ANSWER%}=={y} (goto :weight)
if /i {%ANSWER%}=={yes} (goto :weight)
if /i {%ANSWER%}=={n} (goto :age)
if /i {%ANSWER%}=={no} (goto :age)
:weight
Set /p weight= What is your weight?:
SET /P ANSWER= you entered %weight% is this correct? (Y/N)?
if /i {%ANSWER%}=={y} (goto :height)
if /i {%ANSWER%}=={yes} (goto :height)
if /i {%ANSWER%}=={n} (goto :weight)
if /i {%ANSWER%}=={no} (goto :weight)
:height
Set /p height= What is your Height in Inches?:
SET /P ANSWER= you entered %height% is this correct? (Y/N)?
if /i {%ANSWER%}=={y} (goto :calcs)
if /i {%ANSWER%}=={yes} (goto :calcs)
if /i {%ANSWER%}=={n} (goto :height)
if /i {%ANSWER%}=={no} (goto :height)
:calcs
set /A calc1= %weight%*6.23
echo weight = %calc1%
set /A calc2= %height%*12.7
echo height = %calc2%
set /A calc3= %age%*6.76
set /A calc4= %age%+%calc1%
echo age = %calc3%
set /A calc5 = %calc4%+%calc2%
set /A Result= %calc5%-%calc3%
echo your caloric intake should be %Result%
虽然SET /A
命令只能管理整数,但是在批处理文件中有几种方法可以进行浮点算术运算,甚至三角函数和对数!但是,你只需要一个非常简单的小数点后两位的运算就可以这样实现:
:calcs
set /A Result=( age + height*623 + weight*1270 - age*676 + 50 ) / 100
echo your caloric intake should be %Result%
请注意,+ 50
相当于在最后的总和上加 0.5。
所以问题的完整答案是这样的。
我原来的方程式使用小数,Aacini 指出这是行不通的。所以他加上 +50 来补偿小数点,使它们成为整数。然后在最后除以 100,去掉两位小数。
这是发送过来的版本,效果更好。
set /A Result=( age + height*623 + weight*1270 - age*676 + 50 ) / 100
age 被替换为 + 66 并移至末尾以进行适当的计算。可能不需要额外的括号,但想确定一下。
set /A MResult=( (%weight%*623) + (%height%*1270) - (%age%*676) + 50 ) / 100 + 66
年龄(对于女性)被替换为 655 并移到了末尾,这个等式很管用。
set /A FResult=((%weight%*435) + (%height%*470) - (%age%*470) + 50 ) / 100 + 655
感谢 Aacini 的帮助