Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:为什么cmath.exp(1j*math.pi)给出了答案-1+;1.2246063538223773e-16j,但不仅仅是-1_Python_Math_Complex Numbers - Fatal编程技术网

Python:为什么cmath.exp(1j*math.pi)给出了答案-1+;1.2246063538223773e-16j,但不仅仅是-1

Python:为什么cmath.exp(1j*math.pi)给出了答案-1+;1.2246063538223773e-16j,但不仅仅是-1,python,math,complex-numbers,Python,Math,Complex Numbers,因此,我尝试在python控制台中进行检查: import math import cmath cmath.exp(1j*math.pi) 结果是: -1+1.2246063538223773e-16j 它不应该是-1。这对我来说已经足够接近了——特别是因为math.pi不是无限精确的——考虑到这一点,如果它给你的-1+0j对我来说足够接近——特别是因为math.pi不是无限精确的——考虑到这一点,如果它给了你-1+0j假设你在做这个计算,但你开始时只有5位pi,然后在每个阶段四舍五入到5位

因此,我尝试在python控制台中进行检查:

import math
import cmath
cmath.exp(1j*math.pi)
结果是:

-1+1.2246063538223773e-16j

它不应该是-1。

这对我来说已经足够接近了——特别是因为
math.pi
不是无限精确的——考虑到这一点,如果它给你的
-1+0j

对我来说足够接近——特别是因为
math.pi
不是无限精确的——考虑到这一点,如果它给了你
-1+0j

假设你在做这个计算,但你开始时只有5位pi,然后在每个阶段四舍五入到5位有效数字,那么这实际上是错误的答案。你认为你会得到确切的答案吗?不,当然不是,每个阶段的微小错误都会在答案中产生错误


浮点数学是一样的,只是这次你用的是二进制而不是十进制。

想象一下你在做这个计算,但是你开始时只有5位数的pi,然后在每个阶段四舍五入到5位有效数字。你认为你会得到确切的答案吗?不,当然不是,每个阶段的微小错误都会在答案中产生错误


浮点数学与此相同,只是这次使用的是二进制而不是十进制。

浮点数学不精确。在表达式中其他值的精度范围内,即-1。浮点数学不精确。在表达式中其他值的精度范围内,即-1。