Eric000 发表于 2019-7-2 22:36:49

有关python里开三次方的问题

在python中计算8的三次方根,得出的结果如下
8**(1/3)
2.0
但我用同样的方法试图计算64的三次方根时,得到的却不是整数
64**(1/3)
3.9999999999999996
请问这是为什么?要怎么样才能计算出64三次方根的确切值?

newu 发表于 2019-7-2 22:48:36

这个问题太好了,我也研究下原因

19304270021304 发表于 2019-7-2 23:21:53

原因:这种方法是先计算括号里的(1/3),得到近似值0.3333333333333333,再计算8 ** 0.3333333333333333,所以只能得出近似解,Python自动保留的一般是17位,计算8和27时近似解小数点后16位都是0,自动简化成一个0输出, 而64等近似解就是保留到17位
标准实现方法恐怕要用牛顿法,在下才疏学浅,烦请楼主自行深造。

wp231957 发表于 2019-7-3 18:48:14

没啥毛病,再计算机浮点数表示方法里,3.99和4.00差不多就是一个东西

heidern0612 发表于 2019-7-4 10:26:24

没毛病,计算机就这样。

在python看来,3.99和4.0浮点数基本都类似。

{:5_109:}

Eric000 发表于 2019-7-8 18:20:27

19304270021304 发表于 2019-7-2 23:21
原因:这种方法是先计算括号里的(1/3),得到近似值0.3333333333333333,再计算8 ** 0.3333333333333333, ...

谢谢
页: [1]
查看完整版本: 有关python里开三次方的问题