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

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

使用=比較Java中的浮點數(shù)有什么問題?

使用=比較Java中的浮點數(shù)有什么問題?

幕布斯6054654 2019-06-16 16:16:26
使用=比較Java中的浮點數(shù)有什么問題?根據(jù)這個java.sun頁面 ==是Java中浮點數(shù)的相等比較運算符。但是,當我鍵入此代碼時:if(sectionID == currentSectionID)在我的編輯器中運行靜態(tài)分析,得到:“JAVA 0078浮點值與=相比”使用==要比較浮點值?正確的方法是什么?
查看完整描述

3 回答

?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

測試浮動是否“相等”的正確方法是:

if(Math.abs(sectionID - currentSectionID) < epsilon)

其中epsilon是一個很小的數(shù)字,如0.00000001,取決于所需的精度。


查看完整回答
反對 回復(fù) 2019-06-16
?
冉冉說

TA貢獻1877條經(jīng)驗 獲得超1個贊

只是為了給出其他人說的話背后的理由。

浮點數(shù)的二進制表示有點煩人。

在二進制語言中,大多數(shù)程序員都知道1b=1d,10b=2d,100b=4d,1000b=8d之間的相關(guān)關(guān)系。

嗯,它也是用另外一種方式工作的。

.1b=.5d,.01b=.25d,.001b=.125,.

問題是,沒有精確的方法來表示大多數(shù)十進制數(shù),如1,2,3等。你所能做的就是用二進制來表示。當數(shù)字打印時,系統(tǒng)會做一些模糊舍入,這樣就可以顯示.1,而不是.10000000000001或.999999999999(它們可能與存儲的表示形式一樣接近于.1)。

編輯評論:這是一個問題的原因是我們的期望。我們完全預(yù)計,當我們將2/3轉(zhuǎn)換為十進制時,2/3會被偽造,無論是7、.67或.666667.但我們并不會自然而然地期望,1的四舍五入和2/3一樣-這就是正在發(fā)生的事情。

順便說一句,如果您好奇的話,它內(nèi)部存儲的數(shù)字是使用二進制“科學(xué)表示法”的純二進制表示。所以,如果您告訴它存儲十進制數(shù)10.75d,它將存儲1010b的10,和.11b的小數(shù)。所以它會存儲.1011,然后在結(jié)尾保存幾個位,說:把小數(shù)點移到右邊四位。

(雖然從技術(shù)上講,它不再是小數(shù)點,但現(xiàn)在它是二進制點,但這一術(shù)語不會讓大多數(shù)人更容易理解,因為他們會找到任何有用的答案。)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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