猿问

使用 limit 方法计算 pi 会产生意想不到的结果

我正在尝试在 python 中执行 sin 操作,这正是我正在运行的:

test = math.sin(180/1000000) * 1000000
print(test)

从技术上讲,这个操作给你大约 pi (3.14159265),但在 python 中,它给我 179.99999902800002。有谁知道为什么会发生这种情况?


哔哔one
浏览 127回答 2
2回答

元芳怎么了

该函数期望值以弧度为单位,而不是度数从文档来看,math.sin(x)mathusing或numpy函数之间的区别在于,它将numpy在arraynp.deg2rad([45, 90])作品math.radians([45, 90])结果是TypeError如果您使用单个值,请使用该math函数,否则使用numpy.Wolfram Research链接到 pi 的限制表示。import numpy as npimport math# convert from degrees to radiansx = np.deg2rad(180/1000000)# make calculationv = math.sin(x)z = v * 1000000# print(z)3.1415926535846257math.sin这里并没有真正做任何事情。对于小角度,sin(x) ≈ x,所以sin(π/1000000) × 1000000 ≈ πx[out]:3.1415926535897933e-06v[out]:3.1415926535846256e-06

慕田峪7331174

发生这种情况是因为math.sin(x)期望 x 以弧度为单位:math.sin(x)     Return the sine of x radians.为了解决这个问题,您需要首先将 x 转换为弧度,如下所示:test = math.sin(math.radians(180)/1000000) * 1000000输出:3.1415926535846257我不建议使用 NumPy,因为这个问题没有必要。math.radians()足够了。
随时随地看视频慕课网APP

相关分类

Python
我要回答