我有一些項目有一個id和一個值,我正在尋找最大的元素。在float比較中處理等於case
值是浮動/雙打,並作爲領帶打破我想用較小的id對象。
一種方法如下:
double maxValue = Double.NEGATIVE_INFINITY;
Item maxItem = null;
for (Item item : items) {
if (item.value() > maxValue) {
maxValue = item.value();
maxItem = item;
} else if (item.value() == maxValue && item.id() < maxItem.id()) {
maxItem = item;
}
}
然而,這包括使用浮點數的質量比較,這是氣餒,在我的情況還創建代碼分析步驟的一個關鍵問題。
當然,我可以寫些東西來避免這個問題,例如,使用>=
進行第二次比較,但從可讀性的角度來看,我未來的我或任何其他讀者可能會懷疑它是否是一個錯誤。
我的問題:是否有一種方法可以很好地表達意圖,並避免使用==
進行此項任務的float比較?
你可以只添加註釋,你的代碼解釋給你的未來的自己或別人誰定定地看着你的代碼在將來。 – Jesper
很明顯,這不是「浮動平等FUD」所警告的情況。 – harold
問題到底是什麼?你在找什麼說「好吧,這兩個花車不是真的平等,但他們足夠接近」? – Tunaki