3 回答

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
當(dāng)我查看 C++ 和 Java 的位時(shí),它們會(huì)導(dǎo)致:
爪哇:
4634989787871853517
C++:
4634989787871853517
這意味著它們都是相同的位。由于它們應(yīng)該遵循 IEEE-754,這意味著兩種語言具有相同的值。您只是看到一個(gè)輸出在一種語言中被略微截?cái)啵祬s沒有。

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
浮點(diǎn)數(shù)并不精確,您不能依賴于不同的實(shí)現(xiàn)(語言)獲得完全相同的值。你也不能指望同一種語言在不同的硬件上獲得相同的價(jià)值。
序列化浮點(diǎn)數(shù)并在不同語言和/或硬件實(shí)現(xiàn)之間傳輸它們是一個(gè)難題(不是 N/P 難題,但仍然非常困難)。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
擴(kuò)展 Shawn 的評(píng)論:C++ 回復(fù)有 17 位數(shù)字,Java 回復(fù)有 16 位。如果你將 17 位數(shù)字四舍五入,你會(huì)得到相同的結(jié)果,因?yàn)?35 輪到 4。Double 實(shí)際上略小于 16(大約 52+ 1 位乘以 log 2) 有意義的數(shù)字,因此 C++ 結(jié)果具有誤導(dǎo)性的精確性。您可以控制在 C++ 和 Java 中顯示的位數(shù),但正如 Shawn 所說,計(jì)算機(jī)內(nèi)部的實(shí)際數(shù)字是相同的。
添加回答
舉報(bào)