新手求助
1+2j(1+2j)
x=i+2j
x.real
1.0999999999999999
x.imag
2.0
我照着做的,为啥我的x.real值跟小甲鱼的不一样啊啊啊啊 在Python中,浮点数的运算精度存在一定的误差。这是因为计算机在存储和处理浮点数时采用二进制表示,而有些十进制小数无法精确地转换为二进制表示,从而导致了误差。
因此,当你打印`x.real`时,可能会得到类似于`1.0999999999999999`这样的结果,而不是预期的`1.0`。这并不代表你的代码有误,而只是计算机处理过程中的舍入误差。
如果需要更加精确的浮点数计算,可以使用Python内置的decimal模块来进行高精度计算。例如:
from decimal import Decimal
x = Decimal('1') + Decimal('2j')
print(x.real)# 输出:1
这样就可以避免浮点数计算时的精度误差。
有用请设置最佳答案
没事,误差还和计算机实时环境有关,环境不同就更不用说了
浮点数在计算机中是以二进制形式存储的,而二进制无法精确地表示某些十进制分数,例如 1/3 或者 0.1 等数值。
这就导致了在计算机中表示浮点数时,可能会产生舍入误差。这种舍入误差是由于二进制表示法所导致的,因为某些十进制分数在二进制表示法下可能是无限循环的。
举个例子:我们知道 1.1 + 2.2 的结果是 3.3,但是计算机的输出结果可能是 3.3000000000000003
就是因为于计算机无法精确地表示 0.1 和 0.2 这两个浮点数,从而导致了舍入误差。
想解决这个问题的话,可以使用楼上的 Decimal 类型来进行高精度计算。
sfqxx 发表于 2023-4-13 17:31
在Python中,浮点数的运算精度存在一定的误差。这是因为计算机在存储和处理浮点数时采用二进制表示,而有些 ...
谢谢 Twilight6 发表于 2023-4-14 10:54
没事,误差还和计算机实时环境有关,环境不同就更不用说了
谢谢
页:
[1]