我正在嘗試編寫(xiě)一個(gè)應(yīng)用程序,它可以使用 chudnovsky 算法運(yùn)行任意小數(shù)位數(shù)的 PI。我有2個(gè)問(wèn)題。問(wèn)題:應(yīng)該有任意數(shù)量的小數(shù)位。就我而言,只有 77 個(gè)(如果我的計(jì)數(shù)是正確的)結(jié)果并不完全是 PI。只有前 15 位小數(shù)是完全正確的。不過(guò),可能與第一個(gè)問(wèn)題有關(guān)。環(huán)境:我正在使用 VSCode 進(jìn)行編碼,運(yùn)行 Fedora33 等。在這種情況下,盡管我 99.9% 確信這只是一個(gè)實(shí)現(xiàn)錯(cuò)誤。我的方法:我試圖找出輸出.Acc()不再是“精確”的地方。我發(fā)現(xiàn)這發(fā)生在生產(chǎn)線上sum = sum.Add(sum, sumElement(big.NewFloat(float64(i))))。.Acc()雖然來(lái)自 sumElement的返回值是Exact。但因此,公式與(-1)^ksumElement 的每次執(zhí)行相乘,從而導(dǎo)致交替。這就是為什么我不確定.Acc()在這種情況下是否是一個(gè)有效的指標(biāo)??赡茉诖a中的某個(gè)地方,在錯(cuò)誤的地方使用了有限的數(shù)據(jù)類(lèi)型,因此更多的小數(shù)位被截?cái)唷4a:代碼應(yīng)該是可執(zhí)行的并返回:精確的3.14159265358979319192147977918646609202090703009518871119759542708150903010657以上第一行和最后一行是 math/big 包的 .Acc() 函數(shù)的返回值,中間的數(shù)字是我當(dāng)前的 PI 結(jié)果。
不計(jì)算程序應(yīng)使用“數(shù)學(xué)/大”的“無(wú)限”小數(shù)位
繁華開(kāi)滿天機(jī)
2022-07-11 17:41:11