第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用 Python 的 Pi

使用 Python 的 Pi

慕無忌1623718 2021-06-03 18:13:54
我是 Python 的初學(xué)者。我嘗試用 Python 語言評估 pi。我在這里使用 阿基米德方法。我的代碼是:import mathfrom decimal import *getcontext().prec = 50pi = 0PolySides = 6SideLen = 1Perim = 6Dia = 2while PolySides < 10000000000:    SideLen2 = Decimal(SideLen) / Decimal(2)    radius_a = Decimal(math.sqrt(1 - SideLen2**2))    radius_b = Decimal(1) - Decimal(radius_a)    SideLenNew = Decimal(math.sqrt(SideLen2**2 + radius_b**2))    PolyCircum = Decimal(PolySides * SideLen)    pi = PolyCircum / Dia    print('Polygon Sides:', PolySides, 'Pi = ', pi)    SideLen = SideLenNew    PolySides = 2 * PolySides但出于某種原因,此代碼將 pi 打印到小數(shù)點(diǎn)后 14 位。我不明白我在哪里失去了精度。謝謝你。
查看完整描述

3 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

您必須使用.sqrt()小數(shù)法:


from decimal import *

getcontext().prec = 50


pi = 0

PolySides = 6

SideLen = 1

Perim = 6

Dia = 2


while PolySides < 1000000000000:

    SideLen2 = Decimal(SideLen) / Decimal(2)

    radius_a = (1 - SideLen2**2).sqrt()

    radius_b = Decimal(1) - Decimal(radius_a)

    SideLenNew = (SideLen2**2 + radius_b**2).sqrt()

    PolyCircum = Decimal(PolySides * SideLen)

    pi = PolyCircum / Dia

    print('Polygon Sides:', PolySides, 'Pi = ', pi)

    SideLen = SideLenNew

    PolySides = 2 * PolySides

輸出:


Polygon Sides: 824633720832 Pi =  3.1415926535897932384626357839340399511415560167917

有 22 位精確的小數(shù)。


查看完整回答
反對 回復(fù) 2021-06-06
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

您正在編織進(jìn)出之間float和decimal。math.sqrt接受 afloat并返回 a float,因此將進(jìn)行轉(zhuǎn)換,您的精度將被截?cái)酁閒loat's。


這些變化就足夠了:


while PolySides < 10000000000000000000:

    SideLen2 = Decimal(SideLen) / 2

    radius_a = (1 - SideLen2**2).sqrt()

    radius_b = 1 - radius_a

    SideLenNew = (SideLen2**2 + radius_b**2).sqrt()

    PolyCircum = Decimal(PolySides * SideLen)

    pi = PolyCircum / Dia

    print('Polygon Sides:', PolySides, 'Pi = ', pi)

    SideLen = SideLenNew

    PolySides = 2 * PolySides


查看完整回答
反對 回復(fù) 2021-06-06
?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

確保變量pi本身也是 a Decimal,并避免使用math.sqrt()@Amadan 寫的那樣。使用Decimal.sqrt()


import math

from decimal import *

getcontext().prec = 50


pi = Decimal(0)

PolySides = 6

SideLen = 1

Perim = 6

Dia = 2


while PolySides < 10000000000:

    SideLen2 = Decimal(SideLen) / Decimal(2)

    radius_a = Decimal((Decimal(1) - SideLen2**2).sqrt())

    radius_b = Decimal(1) - Decimal(radius_a)

    SideLenNew = Decimal((SideLen2**2 + radius_b**2).sqrt())

    PolyCircum = Decimal(PolySides * SideLen)

    pi = PolyCircum / Dia

    print('Polygon Sides:', PolySides, 'Pi = ', pi)

    SideLen = SideLenNew

    PolySides = 2 * PolySides

給出:


Polygon Sides: 6 Pi =  3

Polygon Sides: 12 Pi =  3.1058285412302491481867860514885799401888268158392

Polygon Sides: 24 Pi =  3.1326286132812381971617494694917362446497769154815

Polygon Sides: 48 Pi =  3.1393502030468672071351468212084211891503505893626

Polygon Sides: 96 Pi =  3.1410319508905096381113529264596601070364122161628

Polygon Sides: 192 Pi =  3.1414524722854620754506093089612256452476623045496

Polygon Sides: 384 Pi =  3.1415576079118576455164633451298595415043764795884

Polygon Sides: 768 Pi =  3.1415838921483184086689696037211533505200449157810

Polygon Sides: 1536 Pi =  3.1415904632280500957384585059309517235542823086758

Polygon Sides: 3072 Pi =  3.1415921059992715505447766406101173531274972549662

Polygon Sides: 6144 Pi =  3.1415925166921574475928740847688319059677188923680

Polygon Sides: 12288 Pi =  3.1415926193653839551895493120653190422221927255946

Polygon Sides: 24576 Pi =  3.1415926450336908966721415089192384127226230112419

Polygon Sides: 49152 Pi =  3.1415926514507676517042536404922190204484274723852

Polygon Sides: 98304 Pi =  3.1415926530550368416911231804154742022572768058866

Polygon Sides: 196608 Pi =  3.1415926534561041392646431596150783313543414874292

Polygon Sides: 393216 Pi =  3.1415926535563709636628233165541133642749135041839

Polygon Sides: 786432 Pi =  3.1415926535814376697626683659225751788703495073714

Polygon Sides: 1572864 Pi =  3.1415926535877043462876483788980471857502408672475

Polygon Sides: 3145728 Pi =  3.1415926535892710154188945540564999738004063788314

Polygon Sides: 6291456 Pi =  3.1415926535896626827017061710907747199859793791592

Polygon Sides: 12582912 Pi =  3.1415926535897605995224090799271347533561151459628

Polygon Sides: 25165824 Pi =  3.1415926535897850787275848074223367208751396830886

Polygon Sides: 50331648 Pi =  3.1415926535897911985288787393140192102034265840860

Polygon Sides: 100663296 Pi =  3.1415926535897927284792022222880574573760314838880

Polygon Sides: 201326592 Pi =  3.1415926535897931109667830930316368707217160322736

Polygon Sides: 402653184 Pi =  3.1415926535897932065886783107175360897801705020852

Polygon Sides: 805306368 Pi =  3.1415926535897932304941521151390111674024112028327

Polygon Sides: 1610612736 Pi =  3.1415926535897932364705205662443799538615730707255

Polygon Sides: 3221225472 Pi =  3.1415926535897932379646126790207221515422136434928

Polygon Sides: 6442450944 Pi =  3.1415926535897932383381357072148077010289894182968


查看完整回答
反對 回復(fù) 2021-06-06
  • 3 回答
  • 0 關(guān)注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號