gpt4 book ai didi

python - Python 的奇怪计算结果

转载 作者:行者123 更新时间:2023-12-01 05:21:40 25 4
gpt4 key购买 nike

我写了一个crule1.py如下。

 def exp_rule1 (mu1, h, alpha):
return h**2/(4*mu1**2)

然后我在解释器中运行它。我得到了

Python 2.7.6 |Anaconda 1.9.1 (64-bit)| (default, Nov 11 2013, 10:49:15) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

Imported NumPy 1.8.0, SciPy 0.13.3, Matplotlib 1.3.1
Type "scientific" for more details.
>>> import crul1 as c1
>>> c1.exp_rule1(1, 1, 0)
0

然后我将代码复制到解释器中。结果是

>>> def  exp_rule1 (mu1, h, alpha):
... return h**2/(4*mu1**2)
...
>>> exp_rule1(1, 1, 0)
0.25

这让我很困惑,我无法解决它。非常感谢您指出此代码中的问题。

最佳答案

在 Python 2.x 中,如果 / 的两个操作数都是整数,则返回整数值。作为一种特殊情况,如果 n/d 且两者均为正数,则 n < d 为 0。

对于

def exp_rule1 (mu1, h, alpha):
return h**2/(4*mu1**2)

您要确保分子或分母是浮点值。一个简单的方法是将 4 设置为 float 而不是整数。

def exp_rule1 (mu1, h, alpha):
return h**2/(4.0*mu1**2)

另一个解决方案是为 / 导入新的 3.x 行为,即无论操作数如何,始终返回 float 。如果您这样做,请将依赖整数除法的任何除法替换为 //

# This allows 1/2 to return 0.5 instead of 0
from __future__ import division

关于python - Python 的奇怪计算结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com