鱼C论坛

 找回密码
 立即注册
查看: 2224|回复: 8

phython中开n次方的方式

[复制链接]
发表于 2019-4-25 14:50:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
phython里开一个数的n次方有几种方式?
我就是到用math里的sqrt和pow函数。
sqrt不说了,开平方根。
pow把第二个参数写成1除以几就可以开几次方求根,如 math(8,1/3)的值为2,math(16,1/4)的值为3.
但我发现这个方法求某些平方根会得出不准确的值,如:math(64,1/3)的值为3.9999999999999996,我们知道三个4相乘等于64,所以正确的值应该是4.再如:math(125,1/3)的值为4.999999999999999。
也就是说数学里的一个数的多少分之一次方,就是这个数的开多少次方,的定义在这里不是一定对的。
虽然实际应用时,这些值不是很大的情况下可以通过各种取整的方式解决掉,但如果第一个参数大了之后,就很难判断准确性了。
我看有说用外部库如numpy来解决的,自带库有方法能准确实现吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-25 16:28:58 | 显示全部楼层
凌九霄 发表于 2019-4-25 16:19
这个不是Python的问题,而是二进制机器不能精确表示浮点数所致。如果有特殊要求,可使用decimal模块,但是 ...

果然往下刨还是归根结底到了浮点数原理问题啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-25 16:19:50 | 显示全部楼层
这个不是Python的问题,而是二进制机器不能精确表示浮点数所致。如果有特殊要求,可使用decimal模块,但是有性能损失。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-25 16:18:17 | 显示全部楼层
花椒壹拾伍 发表于 2019-4-25 15:38
python版本不一样?我这样写得到的值还是4.999999999999999

浮点数的精度是有限的,只要不影响最终结果即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-25 15:40:41 | 显示全部楼层
本帖最后由 wp231957 于 2019-4-25 15:45 编辑
花椒壹拾伍 发表于 2019-4-25 15:38
python版本不一样?我这样写得到的值还是4.999999999999999


不需要纠结

>>> 125**(1/3)
4.999999999999999
>>>



>>> a=125**(1/3)
>>> print("%.6f"%(a*a*a-125))
-0.000000            精度在这个范围的 就是等于了
>>> print("%.16f"%(a*a*a-125))
-0.0000000000000568   精度在这个范围的 还是有些差距
>>>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-25 15:39:25 | 显示全部楼层
wp231957 发表于 2019-4-25 14:52
3.9和4.0 某种意义上是一样的  浮点数没有绝对相等
即便你自己去写一个开N次方的函数  也只能如此

我想的也是因为1除一个数后产生的浮点数的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-25 15:38:09 | 显示全部楼层

python版本不一样?我这样写得到的值还是4.999999999999999
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-25 14:52:26 | 显示全部楼层
3.9和4.0 某种意义上是一样的  浮点数没有绝对相等
即便你自己去写一个开N次方的函数  也只能如此
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-25 14:52:20 | 显示全部楼层
  1. >>> 125**(1/3)
  2. 5.0
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-4 06:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表