亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 limit 方法計算 pi 會產生意想不到的結果

使用 limit 方法計算 pi 會產生意想不到的結果

嗶嗶one 2023-09-05 20:34:44
我正在嘗試在 python 中執行 sin 操作,這正是我正在運行的:test = math.sin(180/1000000) * 1000000 print(test)從技術上講,這個操作給你大約 pi (3.14159265),但在 python 中,它給我 179.99999902800002。有誰知道為什么會發生這種情況?
查看完整描述

2 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

  • 該函數期望值以弧度為單位,而不是度數

    • 從文檔來看,math.sin(x)

  • mathusing或numpy函數之間的區別在于,它將numpyarray

    • np.deg2rad([45, 90])作品

    • math.radians([45, 90])結果是TypeError

  • 如果您使用單個值,請使用該math函數,否則使用numpy.

  • Wolfram Research鏈接到 pi 的限制表示。

import numpy as np

import math


# convert from degrees to radians

x = np.deg2rad(180/1000000)


# make calculation

v = math.sin(x)


z = v * 1000000


# print(z)

3.1415926535846257

  • math.sin這里并沒有真正做任何事情。

    • 對于小角度,sin(x) ≈ x,所以sin(π/1000000) × 1000000 ≈ π

x

[out]:

3.1415926535897933e-06


v

[out]:

3.1415926535846256e-06



查看完整回答
反對 回復 2023-09-05
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

發生這種情況是因為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()足夠了。


查看完整回答
反對 回復 2023-09-05
  • 2 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號