CodeGym /Blog Java /rawak /Kata Kunci Java Float
John Squirrels
Tahap
San Francisco

Kata Kunci Java Float

Diterbitkan dalam kumpulan
Pada satu ketika dalam pembangunan teknologi pengkomputeran, menjadi jelas bahawa unit pemprosesan pusat memerlukan peranti perkakasan untuk memproses nombor titik terapung. Hari ini, semua seni bina komputer boleh berfungsi dengan berkesan dengan nombor sedemikian. Sudah tentu, dalam bahasa pengaturcaraan, anda juga tidak boleh melakukannya tanpa jenis data yang sepadan. Terdapat dua jenis data titik terapung di Java: float dan double. Kata kunci Java Float mentakrifkan nombor nyata yang menduduki 32 bit dalam ingatan. Kami akan bercakap tentang nombor sedemikian dalam artikel ini.

Nombor titik terapung. Bagaimanakah nombor nyata disimpan dalam komputer?

Untuk menyimpan nombor nyata dalam ingatan komputer, bilangan bit tertentu diperuntukkan. Nombor nyata disimpan sebagai tanda (tambah atau tolak), mantis dan eksponen. Apakah mantissa dan eksponen dijelaskan dengan baik dengan contoh. Anggaran jisim bulan ialah 7* 1022. Di sini 7 ialah mantis, dalam 22 eksponen. Apabila memaparkan besar atau sebaliknya, nombor yang sangat kecil pada skrin, anda boleh melihat entri seperti 7E22. Ini ialah nombor titik terapung, dan 7 di sini ialah mantis, dan 22 ialah eksponen atau kuasa 10. Notasi ini dipanggil tatatanda eksponen.

Kata Kunci Java float dan Kata Kunci Berganda Java

Nilai terapung (nombor titik terapung atau nombor nyata) di Jawa diwakili oleh jenis float dan double . Kata kunci inilah yang digunakan untuk menyimpan nilai sehingga tanda tertentu selepas titik perpuluhan. double ialah nombor dengan ketepatan berganda, sedekat mungkin dengan nilai yang diberikan atau diperoleh hasil daripada pengiraan. Java Double digunakan untuk sebarang pengiraan matematik (akar kuasa dua, sinus, kosinus, ..), serta untuk semua pengiraan yang ketepatan tertentu adalah penting. jenis data terapung digunakan untuk jenis titik terapung yang kurang tepat. Ia digunakan sangat jarang untuk menjimatkan memori. Di bawah ini, kami mempunyai jadual dengan maklumat utama tentang float dan double, serta perbezaannya.
Terapung berganda
Utama Terapung ialah nilai ketepatan tunggal Ia adalah nilai ketepatan berganda
Saiz Lalai 4 bait (32 bit) 8 bait (64 bit)
Nilai asal 0.0f 0.0
Julat dari 1.4e–045 hingga 3.4e+038 daripada 4.9e–324 kepada 1.8e+308
Untuk apa ia digunakan Untuk menjimatkan memori untuk bekerja dengan nombor pecahan dengan agak tepat
Jadi kata kunci Terapung bermaksud nombor, nilai ketepatan tunggal yang mengambil 32 bit atau 4 bait dalam ingatan. Pada sesetengah pemproses, bekerja dengan nombor sedemikian adalah lebih pantas, dan, seperti yang telah disebutkan, mereka mengambil lebih sedikit ruang jika dibandingkan dengan nombor dengan ketepatan berganda. Walau bagaimanapun, adalah mustahil untuk mengatakan dengan jelas dengan kelajuan. Katakan sesetengah pemproses moden memproses nombor ketepatan dua kali ganda dengan lebih pantas.

Java Float dan Pengisytiharan Berganda

Anda boleh mengisytiharkan bilangan jenis berganda dengan cara yang sama seperti bilangan jenis lain:

double myDouble = 2.7;
Walau bagaimanapun, jika anda mewakili nombor titik terapung dengan cara ini, pengkompil akan memerlukan anda menukar jenis nombor kepada dua kali ganda. Berikut ialah contoh pembolehubah apungan yang salah :

public class FloatExample {
   public static void main(String[] args) {
//double and float variables 
       double myDouble = 2.7;
       float myFloat = 3.14;
   }
}
Inilah yang berlaku jika anda menjalankan program ini:

Error:(4, 25) java: incompatible types: possible lossy conversion from double to float
Hakikatnya adalah tidak diingini untuk menggunakan nombor apungan, dan ini perlu dilakukan hanya untuk menjimatkan memori. Semua nombor pecahan sebenar dalam Java adalah Double secara lalai, dan sintaks bahasa juga menekankan perkara ini. Jika anda benar-benar mahu bekerja dengan jenis apungan, anda perlu menentukannya secara eksplisit dengan f yang menamatkan nombor itu.

public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14f;
   }
}
Dengan cara ini, nombor apungan dan berganda boleh ditulis dalam bentuk eksponen.

float myFloat2 = 2E22f;
double myDouble2 = 3e10;
Jika anda menggunakan nombor yang cukup besar dalam perwakilan "biasa", Java akan memaparkannya serta-merta dalam bentuk eksponen. Mari kita ambil contoh:

public class FloatExample {
   public static void main(String[] args) {
//float variables
               float myFloatNumber1=2182818284590.45f;
               float myFloatNumber2=19822612787260.141592181f;
               System.out.println("myFloatNumber1 = " + myFloatNumber1);
               System.out.println("myFloatNumber2 = " + myFloatNumber2);
       System.out.println("myFloatNumber1 + myFloatNumber2 = " + myFloatNumber1 + myFloatNumber2);
           }
       }
Hasil kerja program ini adalah di sini:
myFloatNumber1 = 2.1828183E12 myFloatNumber2 = 1.98226121E13 myFloatNumber1 + myFloatNumber2 = 2.1828183E121.98226121E13

Contoh apungan khas dan nombor berganda

Terdapat tiga nombor titik terapung khas dalam bahasa Java, yang digunakan untuk menunjukkan limpahan dan ralat. Di sini mereka:
  • Infiniti positif ialah hasil pembahagian nombor positif dengan 0. Diwakili oleh pemalar Ganda.POSITIVE_INFINITY dan Terapung.POSITIVE_INFINITY .

  • Infiniti negatif ialah hasil pembahagian nombor negatif dengan 0. Diwakili oleh pemalar Berganda.NEGATIVE_INFINITY dan Terapung.NEGATIVE_INFINITY .

  • NaN (bukan nombor) mewakili pengiraan 0/0 atau mengambil punca kuasa dua nombor negatif. Diwakili oleh pemalar Double.NaN dan Float.NAN .

Berikut ialah contoh menggunakan nombor titik terapung khas ini:

public class FloatExample {
   public static void main(String[] args) {
       int myInt = 1;
       float zero = 0.0f;
       double negZero = -0.0;
       double negativeInfinity = Double.NEGATIVE_INFINITY;
       double positiveInfinity = Float.POSITIVE_INFINITY;

       System.out.println(myInt / zero);
       System.out.println(myInt / negZero);
       System.out.println(zero == negZero);
       System.out.println(negativeInfinity * 0);
       System.out.println(positiveInfinity+negativeInfinity);

   }
}
Hasilnya ialah:
Infiniti -Infiniti benar NaN NaN

Adakah ketepatan berganda mencukupi?

Malah, walaupun ketepatan berganda jenis Double , menggunakan nombor titik terapung, contohnya, dalam pengiraan kewangan, bukanlah idea terbaik kerana ralat pembundaran tidak boleh diterima. Jadi, cuba paparkan output program berikut pada skrin.

public class FloatExample {
   public static void main(String[] args) {
       System.out. println( "2.0 - 1.1 = " + (2.0 - 1.1));
   }
}
Anda akan mendapat hasil berikut:
2.0 - 1.1 = 0.8999999999999999
Adalah logik untuk mengandaikan bahawa hasilnya akan menjadi 0.9. Walau bagaimanapun, ralat sedemikian adalah perkara biasa dan dikaitkan dengan perwakilan binari dalaman bagi nombor. Kita tidak boleh, sebagai contoh, mewakili nilai tepat ⅓ sebagai pecahan perpuluhan; sudah tentu, terdapat sekatan yang serupa dalam sistem binari. Jika tugas itu memerlukan penghapusan ralat pembundaran, Java mempunyai kelas BigDecimal untuk ini.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION