float賦值后加F和不加F,為何輸出不一樣
public class HelloWorld{
? ? public static void main(String[] args) {
int age1=24;
int age2=18;
int age3=36;
int age4=27;
int sum=age1+age2+age3+age4;
float avg=sum/4f;
int minus=age1-age2;
int newAge=--age1;
? ?System.out.println("年齡總和:"+sum);
? ? System.out.println("平均年齡:"+avg);
System.out.println("年齡差值:"+minus);
System.out.println("自減后的年齡:"+newAge);
}
}
輸出的avg=26.25, ?如果把float avg=sum/4f;中的f去掉結(jié)果就變成了 avg=26。 為什么會(huì)這樣
2019-04-12
2019-04-14
加了f相當(dāng)于把分母轉(zhuǎn)換成浮點(diǎn)數(shù),精度可以到達(dá)小數(shù)點(diǎn)后面,像是5/2.0=2.5
不加f相當(dāng)于將兩個(gè)整數(shù)相除的結(jié)果轉(zhuǎn)換為float型,像是5/2=2,2*1.0=2.0
(個(gè)人想法,勿噴?。?/p>
但double就不一樣,加不加L都是2.0,不知道為什么
char加不加‘’結(jié)果是不一樣的
加了‘’后就是單個(gè)字符,單引號(hào)里是啥就是啥
不加‘’就變成了一個(gè)ASCII值了,打印出來(lái)的話(huà)是一個(gè)符號(hào),控制臺(tái)可能識(shí)別不了,打印出一個(gè)帶問(wèn)號(hào)的方框
char c=55;?
System.out.println("shuchu c="+c);
輸出 shuchu c=7 ?輸出的是55的ASCII值
char c='5';?
System.out.println("shuchu c="+c);
輸出 shuchu c=5 輸出的是字符5