Python 处理公式的方式与预期不同
Python handling formula differently than expected
我正在创建供私人使用的潜水 table,但我 运行 遇到了计算 EAD
的错误
def calculate_ead(self):
nitrogen = 100 - self.mix
EAD = (self.depth + 10) * nitrogen / 0.79 - 10
self.depth = int(EAD)
这个计算给出了一个非常高的数字(大约数千)。我从 this 网站和英尺部分的计算中得到了公式。混合高于 21 时的计算应该给出比深度更小的数字。
我对深度和其他东西的初始化:
def __init__(self, d=35, t=30, m=21, p=1.6):
self.depth = int(d) # Depth
self.time = int(t) # Time
self.mix = int(m) # Mix (Oxygen integer)
self.max_po2 = float(p)
在这种情况下混合氧气的百分比,因此当用它减去一百时,它应该给出该公式的氮分数 EAD = (深度 + 10) × N2 的分数 / 0.79 − 10
告诉我我做错了什么?
来自交互式 shell:
的示例测试
depth = 90
mix = 36
nitrogen = 100 - mix
EAD = (depth + 10) * nitrogen / 0.79 + 10
EAD
8111.26582278481
预期输出:
>>>depth = 90
>>>mix = 36
>>>nitrogen = 100 - mix
>>>EAD = (depth + 10) * nitrogen / 0.79 + 10
>>>EAD
67
数字格式:
self.depth为自然数(25, 30,35)
self.mix是自然数(30,45,60)
在您提供的 link 上,
对于以英尺为单位的深度,等效空气深度可以计算如下:
EAD = (Depth + 33) × Fraction of N2 / 0.79 − 33
应用你的数字,
depth = 90
mix = 36
nitrogen = float(100 - mix) /100 #Fraction of N2
EAD = (depth + 33) * nitrogen / 0.79 - 33
print EAD
将给出以英尺为单位的正确结果。
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
66.6455696203
>>>
你应该使用 N2 的 fraction(%),试试下面的代码。
def calculate_ead(self):
nitrogen = (100 - self.mix)/100
EAD = (self.depth + 10) * nitrogen / 0.79 - 10
self.depth = int(EAD)
我正在创建供私人使用的潜水 table,但我 运行 遇到了计算 EAD
的错误def calculate_ead(self):
nitrogen = 100 - self.mix
EAD = (self.depth + 10) * nitrogen / 0.79 - 10
self.depth = int(EAD)
这个计算给出了一个非常高的数字(大约数千)。我从 this 网站和英尺部分的计算中得到了公式。混合高于 21 时的计算应该给出比深度更小的数字。
我对深度和其他东西的初始化:
def __init__(self, d=35, t=30, m=21, p=1.6):
self.depth = int(d) # Depth
self.time = int(t) # Time
self.mix = int(m) # Mix (Oxygen integer)
self.max_po2 = float(p)
在这种情况下混合氧气的百分比,因此当用它减去一百时,它应该给出该公式的氮分数 EAD = (深度 + 10) × N2 的分数 / 0.79 − 10
告诉我我做错了什么? 来自交互式 shell:
的示例测试depth = 90
mix = 36
nitrogen = 100 - mix
EAD = (depth + 10) * nitrogen / 0.79 + 10
EAD
8111.26582278481
预期输出:
>>>depth = 90
>>>mix = 36
>>>nitrogen = 100 - mix
>>>EAD = (depth + 10) * nitrogen / 0.79 + 10
>>>EAD
67
数字格式: self.depth为自然数(25, 30,35) self.mix是自然数(30,45,60)
在您提供的 link 上, 对于以英尺为单位的深度,等效空气深度可以计算如下:
EAD = (Depth + 33) × Fraction of N2 / 0.79 − 33
应用你的数字,
depth = 90
mix = 36
nitrogen = float(100 - mix) /100 #Fraction of N2
EAD = (depth + 33) * nitrogen / 0.79 - 33
print EAD
将给出以英尺为单位的正确结果。
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
66.6455696203
>>>
你应该使用 N2 的 fraction(%),试试下面的代码。
def calculate_ead(self):
nitrogen = (100 - self.mix)/100
EAD = (self.depth + 10) * nitrogen / 0.79 - 10
self.depth = int(EAD)