CodeGym /Blog Jawa /Acak /Tembung Ngambang Jawa
John Squirrels
tingkat
San Francisco

Tembung Ngambang Jawa

Diterbitake ing grup
Ing sawetara titik ing pangembangan teknologi komputasi, dadi cetha yen unit pangolahan pusat mbutuhake piranti hardware kanggo ngolah angka floating point. Saiki, kabeh arsitektur komputer bisa digunakake kanthi efektif karo nomer kasebut. Mesthine, ing basa pamrograman, sampeyan uga ora bisa nindakake tanpa jinis data sing cocog. Ana rong jinis data floating point ing Jawa: float lan double. Tembung kunci Java Float nemtokake nomer nyata sing ngemot 32 bit ing memori. Kita bakal ngomong babagan nomer kasebut ing artikel iki.

Angka floating point. Kepiye nomer nyata disimpen ing komputer?

Kanggo nyimpen nomer nyata ing memori komputer, sawetara bit diparengake. Nomer nyata disimpen minangka tandha (plus utawa minus), mantis, lan eksponen. Apa mantissa lan eksponen paling apik diterangake kanthi conto. Massa rembulan kira-kira 7 * 1022. Ing kene 7 yaiku mantis, ing 22 eksponen. Nalika nampilake gedhe utawa kosok balene, nomer cilik banget ing layar, sampeyan bisa ndeleng entri kaya 7E22. Iki minangka nomer floating point, lan 7 ing kene yaiku mantis, lan 22 minangka eksponen utawa daya saka 10. Notasi iki diarani notasi eksponensial.

Java float Keyword lan Java Double Keyword

Nilai float (nomer floating point utawa angka nyata) ing basa Jawa diwakili dening jinis float lan double . Iki tembung kunci sing digunakake kanggo nyimpen nilai nganti tandha tartamtu sawise titik desimal. pindho minangka nomer kanthi presisi kaping pindho, sabisane karo nilai sing diwenehake utawa dipikolehi minangka asil petungan. Java Double digunakake kanggo pitungan matematika (root persegi, sinus, kosinus, ..), uga kanggo kabeh pitungan sing akurasi tartamtu penting. jinis data float digunakake kanggo jinis floating titik kurang tepat. Iki digunakake arang banget kanggo nyimpen memori. Ing ngisor iki kita entuk tabel kanthi informasi utama babagan float lan dobel, uga bedane.
ngambang pindho
Utama Float minangka nilai presisi tunggal Iku nilai pindho tliti
Ukuran Default 4 bita (32 bit) 8 bita (64 bit)
Nilai Default 0.0f 0.0
Range saka 1.4e–045 kanggo 3.4e+038 saka 4.9e–324 dadi 1.8e+308
Kanggo apa digunakake Kanggo nyimpen memori kanggo nggarap nomer pecahan relatif akurat
Dadi tembung kunci Float tegese nomer, nilai presisi siji sing njupuk 32 bit utawa 4 bita ing memori. Ing sawetara pemroses, nggarap nomer kasebut luwih cepet, lan, kaya sing wis kasebut, njupuk papan sing luwih sithik yen dibandhingake karo nomer kanthi presisi kaping pindho. Nanging, iku mokal kanggo ngomong unequivocally karo kacepetan. Ayo dadi ngomong sawetara pemroses modern ngolah nomer presisi kaping pindho luwih cepet.

Java Float lan Pranyatan Ganda

Sampeyan bisa ngumumake sawetara jinis dobel kanthi cara sing padha karo nomer jinis liyane:
double myDouble = 2.7;
Nanging, yen sampeyan makili nomer floating point ing cara iki, compiler mbutuhake sampeyan ngganti jinis nomer kanggo pindho. Iki minangka conto variabel float sing salah :
public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14;
   }
}
Mangkene apa sing kedadeyan yen sampeyan mbukak program iki:
Error:(4, 25) java: incompatible types: possible lossy conversion from double to float
Kasunyatan iku undesirable nggunakake nomer float, lan iki kudu rampung mung kanggo nyimpen memori. Kabeh nomer pecahan nyata ing Jawa iku pindho minangka standar, lan sintaks basa uga nandheske iki. Yen pancene pengin bisa karo jinis float, sampeyan kudu nemtokake kanthi tegas karo f terminating nomer.
public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14f;
   }
}
Miturut cara, float lan nomer pindho bisa ditulis ing wangun eksponensial.
float myFloat2 = 2E22f;
double myDouble2 = 3e10;
Yen sampeyan nggunakake nomer cukup gedhe ing perwakilan "normal", Jawa bakal langsung nampilake ing wangun eksponensial. Ayo duwe conto:
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);
           }
       }
Asil saka karya program iki ing kene:
myFloatNumber1 = 2.1828183E12 myFloatNumber2 = 1.98226121E13 myFloatNumber1 + myFloatNumber2 = 2.1828183E121.98226121E13

Ngambang khusus lan nomer pindho conto

Ana telung nomer floating point khusus ing basa Jawa, sing digunakake kanggo nuduhake overflows lan kasalahan. Punika:
  • Tanpa wates positif minangka asil pamisah nomer positif kanthi 0. Diwakili dening konstanta Ganda.POSITIVE_INFINITY lan Float.POSITIVE_INFINITY .

  • Tanpa wates negatif minangka asil pamisah nomer negatif kanthi 0. Diwakili dening konstanta Double.NEGATIVE_INFINITY lan Float.NEGATIVE_INFINITY .

  • NaN (dudu nomer) nggambarake pitungan 0/0 utawa njupuk akar kuadrat saka nomer negatif. Diwakili dening konstanta Double.NaN lan Float.NAN .

Iki minangka conto nggunakake nomer floating point khusus iki:
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);

   }
}
Hasile yaiku:
Tanpa wates -Tanpa wates bener NaN NaN

Apa presisi pindho cukup?

Ing kasunyatan, senadyan presisi pindho saka jinis Double , nggunakake nomer floating titik, contone, ing petungan financial, ora idea paling apik amarga kesalahan pambulatan ora ditrima. Dadi, coba nampilake output program ing ngisor iki ing layar.
public class FloatExample {
   public static void main(String[] args) {
       System.out. println( "2.0 - 1.1 = " + (2.0 - 1.1));
   }
}
Sampeyan bakal entuk asil ing ngisor iki:
2.0 - 1.1 = 0.8999999999999999
Iku bakal logis kanggo nganggep yen asil bakal 0,9. Nanging, kesalahan kasebut cukup umum lan digandhengake karo perwakilan binar internal nomer. Kita ora bisa, contone, makili nilai pas ⅓ minangka pecahan desimal; mesthi, ana watesan padha ing sistem binar. Yen tugas mbutuhake ngilangke kasalahan rounding, Jawa wis kelas BigDecimal iki.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION