python - math.exp() 为浮点数返回 0
问题描述
我已经包含了我的问题的相关代码。当我运行代码时,我的英尺到米函数按预期工作。-M*g*z/(T*R)
math.exp() 操作内部给出了一个大小合适的负浮点数。尽管如此,我的函数Pressure()
只返回0.0
,如下所示z = 1000 ft, P = 0.0 atm
:我究竟做错了什么?我已经确保一切都是浮动的,所以我不会被截断,但我仍然遇到问题。任何回应将不胜感激!谢谢!
def Pressure(z):
Po=1.0 #atm
M=29.0 #kg/kmol
g=9.81 #m/s^2
T=300.0 #K
R=0.082057 #Latm/molK
return math.exp(-M*g*z/(T*R))
def ft_to_m(x):
return float(3.28084*x)
for i in range(0,30001): #i in ft
if i % 1000 == 0:
print("z =",i,"ft, P =",Pressure(ft_to_m(i)), "atm")
continue
解决方案
我不知道是您的公式 ( -M*g*z/(T*R)
) 错误还是您误解了math.exp
:math.exp(x)
is e x。
在这里x
,您的(公式的结果)已经-37915
处于第一步,并且只会从那里走下坡路。e -38000是一种非常复杂的编写方式,0
因为 Python 仅使用 64 位浮点整数。
编辑:看起来是您的公式:M = 29 g / kmol(或更差的 lb/lb-mol)而不是 kg/kmol,您可能还想检查 R 和 K 的值。
基本上检查所有值,然后进行尺寸分析以确保单位适合(这对您使用非国际单位制单位(如 atm)没有帮助,因此气压公式的“标准”常量列表不适用于-是)。
推荐阅读
- android - 工具栏与 Android 中的其他内容重叠
- web-applications - 如何模拟用户在网站上的操作?
- unit-testing - 没有应用模拟和间谍
- javascript - Google 翻译 API 中的“文本段过多”错误
- arrays - 术语之间的区别:元素与成员(数组)?
- c++ - 如何在 C++ 中使用自动循环输入数字
- amazon-web-services - 如何根据单个对象的可用性计算总可用性?
- python - Django 可能的循环导入
- wordpress - Wordpress“一键谷歌登录”出现“registration_failed”错误
- python - 有没有办法在 html 标签中删除字符串?