相关疑难解决方法(0)

浮点数学是否破碎?

请考虑以下代码:

0.1 + 0.2 == 0.3  ->  false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2         ->  0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

2798
推荐指数
28
解决办法
28万
查看次数

为什么str(float)在Python 3中返回的数字比Python 2多?

在Python 2.7中,repra float返回最接近17位数的最接近的十进制数; 这足够精确,可以唯一地标识每个可能的IEEE浮点值.str一个float类似的工作,除了它将结果限制为12位数; 对于大多数用途,这是一个更合理的结果,并使您免受二进制和十进制表示之间的细微差别.

Python 2演示:http://ideone.com/OKJtxv

print str(1.4*1.5)
2.1
print repr(1.4*1.5)
2.0999999999999996
Run Code Online (Sandbox Code Playgroud)

在Python 3.2中它出现strrepr返回相同的东西.

Python 3演示:http://ideone.com/oAKRsb

print(str(1.4*1.5))
2.0999999999999996
print(repr(1.4*1.5))
2.0999999999999996
Run Code Online (Sandbox Code Playgroud)

是否存在描述变更的PEP或负责人的其他声明?

python python-2.7 python-3.x floating-point-conversion

23
推荐指数
1
解决办法
1604
查看次数

Python C++浮点数学表示错误

在C++中,

double x = 1.0; 
double y = x / 3.0; 
if (x == y * 3.0)
  cout << " They are equal!" ; 
else
  cout << " They are NOT equal." ;
Run Code Online (Sandbox Code Playgroud)

将打印

‘They are NOT equal.’ 
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,由于1/3的非精确表示为(二进制)数量的有限大小的尾数.但是在Python中(在https://repl.it/repls/MessyJaggedMouse上),

x = 1.0
y = x / 3.0
x == y * 3.0
Run Code Online (Sandbox Code Playgroud)

版画

True
Run Code Online (Sandbox Code Playgroud)

何时以及为什么Python会偏离上述预期的行为?编辑:Python不会离开 - 请参阅下面的答案.

c++ python floating-point

2
推荐指数
1
解决办法
120
查看次数

我如何检查两个浮标完全相等?

我写下面的程序,但我的程序无法检查两个数字是否相等.没有错误,我会感激任何帮助.

import math
def IsCollinding(ball1,ball2):
  distance=math.sqrt((((ball2[0]-ball1[0])**2)+((ball2[1]-ball1[1])**2)))
  print(type(distance))
  print(type(ball1[2]+ball2[2]))
  if(distance==ball1[2]+ball2[2]):
    print("Is Coliding")
  else:
    print("Not Coliding")
  print(distance)
  print(ball1[2]+ball2[2])
ball1=[2,2,3]
ball2=[11,11,9.7279220614]
IsCollinding(ball1,ball2)
Run Code Online (Sandbox Code Playgroud)

输出:

<type 'float'>
<type 'float'>
Not Coliding
12.7279220614
12.7279220614
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
1103
查看次数