面試題.01
阿新 • • 發佈:2020-11-26
1. 浮點型精度丟失?怎麼解決?
1 import java.math.BigDecimal; 2 3 public class Test_MST01 { 4 5 public static void main(String[] args) { 6 float f1 =2.3f; 7 float f2 =2.5f; 8 System.out.println(f1-f2);//-0.20000005 9 10 //如果在專案中,涉及到敏感的的數字,不建議使用float/double 11 //建議使用BigDecimal,替換到浮點型別12 //建議使用引數為String型別的構造方法,用double型別的構造方法還是會有問題 13 BigDecimal f3=new BigDecimal("555.55"); 14 BigDecimal f4=new BigDecimal("555.56"); 15 16 System.out.println(f3.subtract(f4));//-0.01 subtract減法運算 17 } 18 19 }
1 為什麼浮點型精度會丟失? 2 計算機識別的是二進位制的形式,對於小數使用二進位制不能夠精確表示,只能接近值.3 4 解決方式: 5 可以使用BigDecimal ,替換掉浮點型別,定義完浮點型別變數後再通過BigDecimal 類提供的算術方法進行操作,建議使用引數為String型別的構造方法.
2. int的大小?
1 int佔4個位元組 32位(1位元組=8位) 範圍: -2的31次方到+2的31次方-1 2 int 型別變數數值最大是2147483647(10位) 3 //在做使用者登入介面時使用者號碼就不能用int型別
3. byte的大小?最大值+1的結果會是怎樣?
1 範圍: -128 ~ 127 2 3 public class Test_MST02 {4 public static void main(String[] args) { 5 byte x=-128; 6 // 範圍-128~127 7 // --x,表示的是在原來的那個值的基礎上,-1; 8 System.out.println(--x);//127 9 10 byte y=127; 11 System.out.println(++y);//-128 12 } 13 14 }
4. int 和 char是否可以相互轉換?
1 public class Test_MST03 { 2 3 public static void main(String[] args) { 4 //數字轉字元 5 int num=65; 6 char c=(char) num; 7 System.out.println(c);//A 8 9 //字元轉數字 10 char c2='A'; 11 int num2=c2; 12 System.out.println(num2);//65 13 14 //字元轉字串 15 char c3='A'; 16 String string=c3+""; 17 System.out.println(string);//"A" 18 System.out.println(string.getClass());//class java.lang.String 19 20 } 21 22 }