浮點型數據


/*
關於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

  }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM