java學習第3天---3.2---面試題
目錄
內容
1、測試毒藥
有10瓶藥,裏面9瓶是無毒的,有1瓶是毒藥。測試用小老鼠,在喝藥之後7天內是沒事的,第8天和了毒藥的會死掉。現在有4只小老鼠,給你8天時間,怎麼測試出哪一瓶是毒藥?
首先編號:10瓶藥,二進制編號。小老鼠ABCD,小老鼠死活0,1,如下:
A | B | C | D |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
結果:舉例
A | B | C | D |
---|---|---|---|
死 | 活 | 活 | 死 |
1 | 0 | 0 | 1 |
則第9瓶藥爲毒藥。
2、小數問題
- 2.0 - 1.0 = 1.0
- 2.0 - 1.1 = ? 0.89[9] 根據double精度確定
爲什麼?
在java中任何一個整數類型都可以用二進制精確表示出來,但是不代表任何一個小數也可以在有限的位數裏面顯示出來,1.1在存儲的時候出現數值位截取的情況,導致數值不正確
銀行存錢錢問題解決辦法?
-
有單位,單位縮小,數值擴大
- 比如1.1元 ,轉位11角
-
BigDecimal:大數值
import java.math.BigDecimal; public class BigDecimalTest{ public static void main(String[] args){ BigDecimal b1 = new BigDecimal("2.0"); BigDecimal b2 = new BigDecimal("1.1"); BigDecimal b3 = b1.subtract(b2); System.out.println(b3); } } 結果: 0.9
後記 :
本項目爲參考某馬視頻開發,相關視頻及配套資料可自行度娘或者聯繫本人。上面爲自己編寫的開發文檔,持續更新。歡迎交流,本人QQ:806797785
前端項目源代碼地址:https://gitee.com/gaogzhen/vue-leyou
後端JAVA源代碼地址:https://gitee.com/gaogzhen/JAVA