AncilunKiang 2023-10-12 23:16 采纳率: 0%
浏览 36

Python中浮点数单精度和双精度

关于 Python 中浮点数单精度和双精度的问题

今天遇到一个问题,计算 π 值可以使用 Machin 方法。Machin 公式如下:

img

arctg函数可由泰勒级数(用无限项连加式 —— 级数来表示一个函数)算出,公式如下:

img

当然,公式不重要,只是一个交替加减的级数。

代码实现如下:

# 使用 Machin 方法计算pi

def arctg(x, N=5):
    a = [x**i/i for i in range(1, N+1, 4)]  # 先算所有加项
    b = [x**i/i for i in range(3, N+1, 4)]  # 后算所有减项
    return sum(a) - sum(b)


def arctg2(x, N=5):
    return sum([(-1)**(i-1)*x**(2*i-1)/(2*i-1) for i in range(1, N+1)])  # 顺序一加一减

print(arctg(0.1))
print(arctg2(0.1)

arctg是先计算所有加项再计算所有减项,arctg2则是顺序的一加一减,最终结果的小数点7位以后就不一样了:

img

难道前者是单精度,后者是双精度?

  • 写回答

3条回答 默认 最新

  • 梦幻精灵_cq 2023-10-12 23:25
    关注
    • 不是单精度或者双精度,而是浮点数的二进制计算误差造成的。
      我认为,按照公式一加一减算才好,如果没有浮点数的误差,两种算法,都是应该完全一样的。
    评论

报告相同问题?

问题事件

  • 创建了问题 10月12日

悬赏问题

  • ¥15 c#转安卓 java html
  • ¥15 os.listdir文件路径找不到
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777
  • ¥50 医院HIS系统代码、逻辑学习
  • ¥30 docker离线安装mysql报错,如何解决?
  • ¥15 构建工单的总账影响在哪里查询或修改
  • ¥15 三个简单项目写完之后有重赏之后联系我
  • ¥15 python报内存不能read错误