【发布时间】:2014-02-08 12:52:39
【问题描述】:
如果有人能告诉我是否可以在 Python 中明确设置浮点变量的精度,我将不胜感激。我的意思是像 MATLAB 中的格式的长/短函数。谢谢!
这里是一个例子!
import numpy as np
from matplotlib import pyplot as plt
from mayavi import mlab
import matplotlib.cm as cm
from matplotlib import animation
from decimal import *
setcontext(program_context)
program_context = Context(prec=4, rounding=ROUND_UP)
a=.1
dt=.1
nx=31
ny=31
p=6
x = np.linspace(-p,p,nx)
y = np.linspace(-p,p,ny)
qx=2.0*p/(nx-1)
qy=2.0*p/(ny-1)
ax.set_xlim(-p,p)
ax.set_ylim(-p,p)
X,Y = np.meshgrid(x,y)
U=-a*Y
V=a*X
xp = np.empty(11)
yp = np.empty(11)
xp[0]=2
yp[0]=2
for i in range(10):
xp[i+1]=xp[i]+dt*U[i+(2+p)/qx,i+(2+p)/qy]
yp[i+1]=yp[i]+dt*V[i+(2+p)/qx,i+(2+p)/qy]
print (xp[i], yp[i])
我得到以下内容:
(2.0, 2.0)
(1.98, 2.02)
(1.956, 2.044)
(1.9279999999999999, 2.0720000000000001)
(1.8959999999999999, 2.1040000000000001)
(1.8599999999999999, 2.1400000000000001)
(1.8199999999999998, 2.1800000000000002)
(1.7759999999999998, 2.2240000000000002)
(1.7279999999999998, 2.2720000000000002)
(1.6759999999999997, 2.3240000000000003)
是否有可能只获得小数部分的 4 个数字?谢谢您的帮助! Strömungsmechanik
【问题讨论】:
-
谢谢托拜厄斯。每次我需要特定格式时,我想要一些比通过命令小数强制格式更实用的东西。我可以像在 MATLAB 中那样为整个程序设置简短的格式吗?谢谢!
-
setcontext(program_context)必须在声明program_context之后,而不是之前。 -
即使我们把它放在它之后也不会改变任何东西!我认为对每个变量强加 Decimal 太麻烦了!再次感谢你的帮助! :)
-
@Strömungsmechanik:同意必须将每个变量声明为 Decimal 很麻烦。看看 numpy 的
around函数和我在下面链接到的 SO 答案,这可能很有用,但我对 numpy 的了解还不够确定。