/*
關於java語言中的浮點型數據
浮點型包括:
float 4個字節
double 8個字節
float是單精度
double是雙精度
double更精確
比如說:
10.0 / 3 如果采用float來存儲的話結果可能是:3.33333
10.0 / 3 如果采用double來存儲的話結果可能是:3.33333333333333
但是需要注意的是:如果用在銀行方面或者說使用在財務方面,double
也是遠遠不夠的,在java中提供了一種精度更高的類型,這種類型專門
使用在財務軟件方面:java.math.BigDecimal (不是基本數據類型,屬於
引用數據類型。)
float和double存儲數據的時候都是存儲的近似值。
為什么?
因為現實世界中有這種無限循環的數據 例如:1/3
數據實際上是無限循環,但是計算機的內存有限,用一個有限的資源
表示無限的數據,只能存儲近似值。
long類型占用8個字節
float類型占用4個字節
哪個容量大?
注意:任意一個浮點型都比整數型空間大。
float容量 > long容量
java中規定,任何一個浮點型數據默認被當做double來處理。
如果想讓這個浮點型字面量被當做float類型來處理,那么
請在字面量后面添加F/f
1.0 那么1.0默認被當做double類型處理
1.0 這才是float類型。(1.0f)
*/
public class F
{
public static void main(String[] args)
{
// 這個不存在類型轉換
// 3.1415926是double類型
// p1是double類型
double p1 = 3.1415926;
System.out.println(p1);
// 這個可以嗎?
// 錯誤:不兼容的類型:從double轉換到float可能會有損失。
// float f = 3.14;
// 怎么修改以上的代碼呢?
// 第一種方式:在字面量后面添加F/f
//float f = 3.14f;
//float f = 3.14F;
// 第二種方式:強制類型轉換,但可能損失精度,謹慎使用。
float f = (float)3.14;
System.out.println(f);
// 分析這個程序,可以編譯通過嗎?
// 錯誤:不兼容的類型從double轉換到int可能會有損失。
// 原理:先將5轉換成double類型。然后再做運算,結果是double
// 大容量無法直接賦值給小容量,需要強轉。
// int i = 10.0 / 5;
// 怎么修改
int i = (int)10.0 / 5;
System.out.println(i); // 2
// 可以這樣修改嗎?
int x = (int)(10.0 / 5);
System.out.println(x); // 2
}
}
