相关疑难解决方法(0)

Python部门

我试图将一组数字从-100标准化为0到10-100的范围,并且只是注意到即使没有变量,也没有评估我期望它的方式:

>>> (20-10) / (100-10)
0
Run Code Online (Sandbox Code Playgroud)

浮动部门也不起作用:

>>> float((20-10) / (100-10))
0.0
Run Code Online (Sandbox Code Playgroud)

如果除法的任何一方被强制转换为浮点数,它将起作用:

>>> (20-10) / float((100-10))
0.1111111111111111
Run Code Online (Sandbox Code Playgroud)

第一个示例中的每一侧都评估为int,这意味着最终答案将被转换为int.因为0.111小于.5,所以它会变为0.在我看来,这不是透明的,但我想这就是它的方式.

解释是什么?

python math python-2.x

129
推荐指数
5
解决办法
41万
查看次数

为什么Python返回0进行简单除法计算?

为什么这个简单的计算返回0

>>> 25/100*50  
0
Run Code Online (Sandbox Code Playgroud)

虽然这实际上正确计算?

>>> .25*50
12.5

>>> 10/2*2  
10
Run Code Online (Sandbox Code Playgroud)

第一个例子有什么问题?

python

52
推荐指数
2
解决办法
5万
查看次数

Python浮点任意精度可用吗?

只是为了好玩,因为它非常简单,我编写了一个简短的程序来生成嫁接数,但由于浮点精度问题,它没有找到一些更大的例子.

def isGrafting(a):
  for i in xrange(1, int(ceil(log10(a))) + 2):
    if a == floor((sqrt(a) * 10**(i-1)) % 10**int(ceil(log10(a)))):
      return 1

a = 0
while(1):
  if (isGrafting(a)):
    print "%d %.15f" % (a, sqrt(a))
  a += 1
Run Code Online (Sandbox Code Playgroud)

此代码缺少至少一个已知的嫁接编号.9999999998 => 99999.99998999999999949999999994999999999374999999912... 它乘以后似乎会降低额外的精度10**5.

>>> a = 9999999998
>>> sqrt(a)
99999.99999
>>> a == floor((sqrt(a) * 10**(5)) % 10**int(ceil(log10(a))))
False
>>> floor((sqrt(a) * 10**(5)) % 10**int(ceil(log10(a))))
9999999999.0
>>> print "%.15f" % sqrt(a)
99999.999989999996615
>>> print "%.15f" % (sqrt(a) * 10**5) …
Run Code Online (Sandbox Code Playgroud)

python floating-point floating-accuracy

42
推荐指数
4
解决办法
5万
查看次数