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

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

使用 Java 的萊布尼茲公式

使用 Java 的萊布尼茲公式

慕絲7291255 2023-10-13 10:32:43
pi 的萊布尼茨公式是: pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9...我試圖用 Java 編寫這個(gè),但遇到了一個(gè)問題,輸出總是4(這不是 pi 的值)。我將代碼放入 java 可視化工具中,問題似乎在于,當(dāng)代碼落入 else 語句中時(shí),它不會從 pi 中減去(1 分母),這使得 prevPi 值和 pi 值相同,即導(dǎo)致 do/while 循環(huán)結(jié)束。有誰知道我該如何解決這個(gè)問題?我的代碼:public static float piCalculatorLeibniz() {        float pi = 0;        int denominator = 1;        float prevPi = 0;        boolean keepGoing = true;        int i = 0;        while (keepGoing == true) {            prevPi = pi;            if (i % 2 == 0) {                pi += (1/denominator);            } else {                pi -= (1/denominator);            }            i++;            denominator += 2;            if (pi == prevPi) {                keepGoing = false;            }        }        pi *= 4;        return pi;    }
查看完整描述

3 回答

?
白板的微信

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

你說得對。4實(shí)際上并不是Pi的值。


問題是denominator變量是int所以結(jié)果1/denomenator是。這使得您在一次迭代后退出循環(huán),因?yàn)閕nt/int0pi == prevPi


只需將denominator類型更改為雙精度(或浮點(diǎn)數(shù)),您就會得到正確的答案。


另外,你不需要寫while(keepGoing == true). 該變量keepGoing已經(jīng)是一個(gè)布爾值,你可以簡單地寫while(keepGoing)


編輯:


我喜歡使用這段代碼,所以這里有一個(gè)稍微短一點(diǎn)的版本,由于使用了double. 它似乎也收斂得更快:


double pi = 0, denominator = 1, prevPi = 1;

while (pi != prevPi) {

    prevPi = pi;

    pi += (1 / denominator) - (1 / (denominator + 2));

    denominator += 4;

}

return pi * 4;


查看完整回答
反對 回復(fù) 2023-10-13
?
慕婉清6462132

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

問題是整數(shù)除法會產(chǎn)生整數(shù),而不是浮點(diǎn)數(shù)或雙精度數(shù)。

1 / 3是 0。

為了避免這種情況,您可以改用浮點(diǎn)數(shù)作為分母,而不是整數(shù)。

float denominator = 1.0f;


查看完整回答
反對 回復(fù) 2023-10-13
?
慕容森

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

讓你的所有操作數(shù)都是浮點(diǎn)類型。否則你的結(jié)果是一個(gè)整數(shù)。

請參閱Java 語言規(guī)范:

如果提升的類型是 float 或 double,則執(zhí)行浮點(diǎn)運(yùn)算。


另外,在大多數(shù)平臺上,您可以使用double而不會造成任何性能損失,但這是另一個(gè)主題。;-)


查看完整回答
反對 回復(fù) 2023-10-13
  • 3 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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