JavaRush /Blog Java /Random-MS /Sedikit lebih mendalam tentang nombor BigDecimal
grishin
Tahap
Харьков

Sedikit lebih mendalam tentang nombor BigDecimal

Diterbitkan dalam kumpulan
Akhirnya, selepas berehat selama 3 bulan, saya kembali mengikuti kursus. Saya pergi rehat pada awal Januari. Saya kemudian memutuskan untuk beralih kepada mempelajari disiplin lain, seperti HTML/CSS/Javascript. Sepanjang perjalanan, saya mula mempelajari teknologi (servlet dan JSP). Pada masa itu, saya telah menyelesaikan 24 tahap dan sedikit terperangkap pada kelas dalaman - bukannya apa-apa yang tidak jelas, cuma pengetahuan yang diperoleh perlu sistematik, kerana terlalu banyak yang telah diperoleh dalam tempoh yang singkat dalam mod "galop merentasi Eropah". Jadi, sekarang saya memutuskan untuk membaca jilid pertama Horstman dengan teliti untuk menyatukan pengetahuan saya tentang Java Core dan pada masa yang sama menyelesaikan tugasan yang tinggal dari peringkat sebelumnya, dan kemudian meneruskan ke peringkat. Saya bermula dengan masalah bonus dari tahap 15 tentang faktorial. Setelah menanganinya, saya memutuskan untuk melihat dengan lebih mendalam kelas BigDecimal. Saya tidak menjumpai apa-apa artikel yang sangat popular di internet, jadi saya melihat dokumentasi dan perenggan pertama di dalamnya serta-merta membuatkan saya berfikir, entah bagaimana tidak semuanya jelas. Saya memutuskan untuk sampai ke dasar kebenaran, dan supaya kerja saya tidak menjadi sia-sia, saya memformat segala-galanya dalam bentuk artikel dan sekarang saya menyiarkannya kepada masyarakat untuk bertukar pendapat, dan mungkin ia akan membantu seseorang. Jadi saya ambil perenggan pertama dan pecahkan menjadi ayat. Hanya ada 5 ayat di dalamnya. Ayat nombor 3 dan 4 telah digariskan dan dialihkan ke penghujung perenggan (mengapa saya melakukan ini - baca terus). Dan terjemahan itu dibuat dengan sewajarnya dalam susunan yang diubah ini. Perenggan pertama asal
  1. Nombor perpuluhan yang ditandatangani dengan ketepatan arbitrari yang tidak berubah.
  2. BigDecimal terdiri daripada nilai tidak berskala integer ketepatan arbitrari dan skala integer 32-bit.
  3. Jika sifar atau positif, skala ialah bilangan digit di sebelah kanan titik perpuluhan.
  4. Jika negatif, nilai tidak berskala nombor didarabkan dengan sepuluh kepada kuasa penolakan skala.
  5. Oleh itu, nilai nombor yang diwakili oleh BigDecimal ialah ( unscaledValue × 10 -skala ).
Asal dengan susunan ayat yang disusun semula
  1. Nombor perpuluhan yang ditandatangani dengan ketepatan arbitrari yang tidak berubah.
  2. BigDecimal terdiri daripada nilai tidak berskala integer ketepatan arbitrari dan skala integer 32-bit.
  3. Oleh itu, nilai nombor yang diwakili oleh BigDecimal ialah ( unscaledValue × 10 -skala ).
  4. Jika sifar atau positif, skala ialah bilangan digit di sebelah kanan titik perpuluhan.
  5. Jika negatif, nilai tidak berskala nombor didarabkan dengan sepuluh kepada kuasa penolakan skala.
Terjemahan diperluaskan (setiap titik dalam terjemahan sepadan dengan titik dalam asal)
  1. Ini ialah nombor perpuluhan pecahan 1 tidak boleh diubah dengan tanda 2 , dengan panjang arbitrari 34 .
  2. Nombor BigDecimal ditentukan oleh dua parameter. Yang pertama daripada mereka, yang dipanggil. nilai tidak berskala ialah integer dengan panjang tanpa had. Mengetahui hanya parameter ini, seseorang tidak boleh mengatakan apa-apa tentang nilai sebenar nombor BigDecimal. Untuk melakukan ini, anda mesti mengetahui parameter kedua - integer 32-bit yang dipanggil skala.
  3. Kemudian nilai nombor BigDecimal boleh dikira menggunakan formula berikut: unscaledValue × 10 -scale
  4. Jika BigDecimal ialah sifar atau positif, skala ialah bilangan digit selepas titik perpuluhan.
  5. Jika BigDecimal adalah negatif, nilai tidak berskalanya didarabkan dengan 10 dinaikkan kepada kuasa yang sama dengan skala dengan tanda tolak.
Nota Terjemahan
1. Pecahan, kerana "ketepatan sewenang-wenang" termasuk, antara lain,
   bahawa ini adalah nombor tepat, dan nombor tepat mesti mempunyai titik perpuluhan,
   dalam erti kata lain - pecahan.
2. Iaitu boleh menjadi positif dan negatif.
3. Panjang sewenang-wenang, kerana "ketepatan sewenang-wenang" juga bermaksud
   "Nombor digit yang sewenang-wenangnya."
4. Sebenarnya, nombor BigDecimal ialah nombor nyata. Tetapi memasang
   tetapan yang berbeza, anda boleh menggunakannya bukan sahaja dalam pengiraan saintifik,
   dan juga dalam kewangan.
Jadi, ayat yang bergaris adalah faktor utama yang mengelirukan saya - saya sebenarnya hanya akan mengeluarkannya daripada teks, kerana sebenarnya ia adalah mengenai perkara yang sama, dan selain itu, ia adalah mengenai perkara yang sama seperti yang dikatakan dalam ayat nombor 5. Itu. tiga ayat berturut-turut hanya mengatakan bahawa nilai tidak berskala didarab dengan 10 dinaikkan kepada kuasa yang sama dengan skala dengan tanda tolak. Ini mengelirukan apabila anda mula-mula membacanya, kerana apabila membaca ayat nombor 3, anda faham bahawa kerana ada jika, ia bermakna akan ada satu perkara di sini, dan dalam ayat seterusnya sesuatu yang lain. Tetapi tidak, kedua-dua ayat mengatakan perkara yang sama, hanya dalam perkataan yang berbeza. Nah, ayat ketiga (terakhir dalam perenggan) berturut-turut tentang perkara yang sama mungkin seperti pukulan kawalan. Tidak jelas mengapa teks itu disusun dengan cara yang mengelirukan, kerana formula unscaledValue × 10 -skala daripada ayat terakhir memberikan definisi nombor yang besar dengan jelas, tidak jelas dan menyeluruh yang mungkin.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION