草庐IT

floating-planet

全部标签

python - 打印整数或带 n 位小数的 float

在Python中,当后一种情况要求我将打印输出限制为一定数量的数字时,如何打印可能是整数或实数类型的数字?长话短说,假设我们有以下示例:print("{0:.3f}".format(num))#Icannotdoprint("{}".format(num))#becauseIdon'twantallthedecimals是否有一种“Pythy”方式来确保例如万一num==1我打印1而不是1.000(我的意思是除了用if语句使我的代码困惑之外) 最佳答案 使用Python3*,您只需使用round()因为除了舍入float之外,当应用

python - Python 中的 float

我正在通过LearnPythonTheHardWay学习,我遇到了:Noticethemathseems“wrong”?Therearenofractions,onlywholenumbers.Findoutwhybyresearchingwhata“floatingpoint”numberis.我已经阅读了它的内容:http://docs.python.org/tutorial/floatingpoint.html我不知道如何输出float,我考虑过使用round(3+3,2)。这样对吗? 最佳答案 对于float,您可以在数字后

python - 带有 float 的 Numpy bincount()

我正在尝试获取浮点类型的numpy数组的bincount:w=np.array([0.1,0.2,0.1,0.3,0.5])printnp.bincount(w)如何将bincount()用于浮点值而不是整数? 最佳答案 在使用bincount之前,您需要使用numpy.unique。否则你在计算什么是模棱两可的。对于numpy数组,unique应该比Counter快得多。>>>w=np.array([0.1,0.2,0.1,0.3,0.5])>>>uniqw,inverse=np.unique(w,return_inverse=T

python - 将 float 转换为字符串,并在 Python 中的点后切割零位小数

我无法通过以下方式将float转换为字符串:20.02-->20.0220.016-->20.0220.0-->20%g格式似乎是最好的,但我得到了奇怪的结果:In[30]:"%.2g"%20.03Out[30]:'20'In[31]:"%.2g"%20.1Out[31]:'20'In[32]:"%.2g"%20.3Out[32]:'20'In[33]:"%.2g"%1.2Out[33]:'1.2'In[34]:"%.2g"%1.0Out[34]:'1'In[35]:"%.2g"%2.0Out[35]:'2'In[36]:"%.2g"%2.2Out[36]:'2.2'In[37]:"%

python - 在 Python 中子类化 float 类型,无法在 __init__() 中捕获异常

在Python2.5上,我需要通过修改后的__str__()方法来使用float。我还需要知道构造函数何时失败。为什么我无法捕获float.__init__()引发的异常?查询派生浮点对象数值的最佳方法是什么?在我的代码中,我使用了float(self)。classMy_Number(float):def__init__(self,float_string):try:super(My_Number,self).__init__(float_string)except(TypeError,ValueError):raiseMy_Error(float_string)def__str__(

python - 在 Python 中使用 7.0 或 float(7) 是否计算量较小?

我很好奇哪种形式更有效,是正确的风格等等。我觉得“.0”方法要快得多;我不确定为什么“float”方法同样受到赞赏(如果是的话)。 最佳答案 使用float(7)会增加一些不必要的开销——Python必须在globals()中找到float函数并调用它。使用7.0在编译时而不是运行时进行所有必要的转换。您可以使用Pythonbytecodedisassembler查看此信息.>>>importdis>>>deff():return7.0...>>>defg():returnfloat(7)...>>>dis.dis(f)10LOAD

python - 'is' 运算符对 float 的表现出乎意料

我在对模块进行单元测试时遇到了一个令人困惑的问题。该模块实际上正在转换值,我想比较这些值。与==和is相比是有区别的(部分,我注意到了这个区别)>>>0.0is0.0True#asexpected>>>float(0.0)is0.0True#asexpected正如预期的那样,但这是我的“问题”:>>>float(0)is0.0False>>>float(0)isfloat(0)False为什么?至少最后一个真的让我感到困惑。float(0)和float(0.0)的内部表示应该相等。与==的比较按预期工作。 最佳答案 这与是的工作方

python - 将 float 初始化为 '+inf' 、 '-inf' 和 'nan' 的替代方法

要将float常量初始化为+inf、-inf、nan,我总是使用用字符串调用的float():print(float('inf'),float('+inf'),float('-inf'),float('nan'))这打印:[inf,inf,-inf,nan]1.)Python中是否存在初始化这些常量的替代方法(不使用字符串调用float)?2.)我可以通过一些数学运算产生这些常量(+/-inf,nan)吗?例如用于将变量f设置为+inf,通过编写类似f=1.0/0.0的内容(显然,这是除以零的错误). 最佳答案 从技术上讲,是的,还

python - 如何在 python 中将有理数和十进制数字字符串转换为 float ?

如何将可以表示小数或有理数的字符串转换为float>>>["0.1234","1/2"]['0.1234','1/2']我想要[0.1234,0.5]。eval是我的想法,但没有运气:>>>eval("1/2")0 最佳答案 如果转换失败我会解析字符串:>>>defconvert(s):try:returnfloat(s)exceptValueError:num,denom=s.split('/')returnfloat(num)/float(denom)...>>>convert("0.1234")0.1234>>>convert

python - python/numpy 中的 float 学不能跨机器重现

比较几台不同机器的浮点计算结果,它们始终产生不同的结果。这是一个重现该行为的精简示例:importnumpyasnpfromnumpy.randomimportrandnasrandM=1024N=2048np.random.seed(0)a=rand(M,N).astype(dtype=np.float32)w=rand(N,M).astype(dtype=np.float32)b=np.dot(a,w)foriinrange(10):b=b+np.dot(b,a)[:,:1024]np.divide(b,100.,out=b)printb[0,:3]不同的机器产生不同的结果,比如[