Python:为什么cmath.exp(1j*math.pi)给出了答案-1+;1.2246063538223773e-16j,但不仅仅是-1
因此,我尝试在python控制台中进行检查: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位
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。