驚!超過百分之九十九的人曾經寫錯了Java的取整方法!

引子故事:

今天天氣晴朗,天上下着冰雹,正是寫代碼的好時光。
公司領導對一羣Java實習生組織了一個考覈,題目如下:

設計一個程序輸入任意一個數字,輸出該數字的整數部分。
考覈時間:下班前完成。

實習生們都覺得這很簡單,馬上開幹,實習生四毛一個五分鐘就完成了程序的編輯,而實習生九毛第二天中午十一點五十九 分就完成了,他們都根據考覈要求在下班前完成了這次考覈任務,把代碼交給了領導查驗。對於按時完成考覈,他們應該得到獎勵,獎勵一朵小紅花:
獎勵你 一朵小紅花
領導看了四毛的代碼,感到非常生氣!然後給九毛漲了一塊錢工資。他們的成績如下:
在這裏插入圖片描述

我們再來看看他們寫的代碼,先看看四毛的:

...公司要求保密省略一部分...
System.out.println("請輸入一個任意數字:");
...公司要求保密省略一部分...
int i = (int)Double.parseDouble(scan.next());
System.out.println("您輸入的數字的整數部分爲:"+i);
...公司要求保密省略一部分...

輸入-1.5,竟然輸出的是-1!正確的值應該是-2。

再來看看九毛的代碼:

...公司要求保密省略一部分...
System.out.println("請輸入一個任意數字:");
...公司要求保密省略一部分...
int i = Math.floor(Double.parseDouble(scan.next()));
System.out.println("您輸入的數字的整數部分爲:"+i);
...公司要求保密省略一部分...

輸入-1.5,輸出的是-2,正確!

四毛自己去實現一個取整方法,這種方法估計不少人曾經用過來取整,中招的在評論區舉個手嗎?

java.lang.Math提供了很多數學相關方法,非常強大,建議還是不要造輪子,用經過大量測試成熟的方法去寫代碼降低BUG發生的機率。

最後我們再來看看Math裏和這次考覈相關的方法:

數學意義上的取整數部分:Math.floor(-1.5)=-2
四捨五入取整:Math.rint(-1.5)=-2
進位取整:Math.ceil(-1.1)=-1


歡迎評論點贊!您的支持是我創作的動力!感謝支持!
歡迎關注公衆號“程序員轉管理”獲取更多優質文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章