Apa perbedaan antara float dan double di php?

Float dan double adalah tipe data primitif yang digunakan oleh bahasa pemrograman untuk menyimpan bilangan real (desimal) titik-mengambang seperti 10. 923455, 433. 45554598 dan seterusnya. Artikel ini akan memberi Anda perbedaan mendetail antara tipe data float dan double

Mengambang vs Ganda. Perbedaan Anda harus tahu

Dalam dunia komputasi, data numerik dapat direpresentasikan dalam 2 cara - aritmatika fixed-point dan floating-point. Data titik tetap adalah apa yang kita sebut sebagai bilangan bulat dengan semacam faktor penskalaan. Misalnya, 3. 14 akan menjadi 314 dengan faktor penskalaan 100, atau 2. 3456 bisa dibulatkan menjadi 2. 345 untuk mencapai jumlah digit yang tetap. Metode ini berkompromi dengan keakuratan hasil dan tidak cocok untuk semua situasi

Dengan demikian lebih mudah dan lebih akurat untuk menggunakan representasi floating-point untuk perhitungan presisi tinggi (seperti yang akan kita lihat di bagian selanjutnya)

Apa perbedaan antara float dan double di php?

Jika Anda ingin membaca tentang bilangan titik-mengambang dari sudut pandang aritmatika, Anda dapat membaca artikel Wikipedia ini. Untuk blog ini, kami telah berfokus pada bagaimana bahasa pemrograman menggunakan bilangan titik-mengambang ini untuk mendapatkan nilai dan rentang presisi

Mengapa menggunakan data floating point?

Presisi campuran

Dalam presisi campuran, nilai presisi tunggal dapat digunakan untuk perhitungan yang rumit. Anda dapat menganggapnya sebagai trade-off antara akurasi dan efisiensi memori. Dengan menggabungkan float16 (setengah presisi) dan float32 (presisi tunggal), aplikasi dapat meningkatkan performa aplikasi dan kecepatan transfer data. Setengah presisi ditentukan oleh Microsoft dan Nvidia untuk menghemat ruang dan kompleksitas perhitungan floating-point

Tapi tidak selalu

Presisi sewenang-wenang

Kami menggunakan matematika titik-mengambang dan bilangan bulat untuk perhitungan yang tepat di mana hasilnya hanya dibatasi oleh jumlah memori yang tersedia di sistem. Jenis perhitungan ini disebut perhitungan presisi arbitrer atau tak terbatas. Salah satu aplikasi yang paling penting dari presisi sewenang-wenang adalah kriptografi kunci publik di mana perhitungan dengan angka yang memiliki ratusan digit (eksponensial) adalah pemandangan umum.

Jenis presisi serupa lainnya adalah perhitungan simbolik di mana kami menggunakan nilai simbol yang tepat (seperti PI) untuk perhitungan yang kompleks

Apa perbedaan antara float dan double di php?

Apung dan gandakan

Ganda lebih tepat daripada float dan dapat menyimpan 64 bit, dua kali lipat dari jumlah bit yang dapat disimpan float

Ganda lebih tepat dan untuk menyimpan angka besar, kami lebih suka ganda daripada float. Misalnya, untuk menyimpan gaji tahunan CEO sebuah perusahaan, gandakan akan menjadi pilihan yang lebih akurat. Semua fungsi trigonometri seperti sin, cos, tan, fungsi matematika seperti sqrt mengembalikan nilai ganda. Namun, ganda datang dengan biaya. Kecuali kita benar-benar membutuhkan ketelitian hingga 15 atau 16 angka desimal, kita dapat tetap mengapung di sebagian besar aplikasi, karena dua kali lipat lebih mahal. Dibutuhkan sekitar 8 byte untuk menyimpan variabel. Kami menambahkan 'f' atau 'F' ke nomor untuk menunjukkan bahwa itu adalah tipe float gagal yang diambil sebagai ganda

Tabel kecil yang memberikan persyaratan memori dan rentang float dan double ditunjukkan di bawah –

Tipe floating pointPersyaratan memoriRangeFloat4 byte±3. 40282347E+38F saya. e. 6-7 digit signifikanDouble8 bytes±1. 79769313486231570E+308i. e. 15-16 angka penting

Float dan double berfungsi dengan cara yang sama di semua bahasa pemrograman. Misalnya, di Jawa, keduanya akan melontarkan NumberFormatException dengan operasi yang tidak melibatkan angka sebenarnya. Perhatikan bahwa kompiler tidak akan mendeteksi pengecualian ini

String sname = "DR";
float fname = Float.parseFloat(sname);
System.out.println(fname/num1); // Leads to NumberFormatException at runtime
Dividing float and double by zero will give an output of ‘Infinity’ in Java.
double num2 = 344.55555555;
System.out.println(num2/0);

Ini tidak akan menghasilkan kesalahan tetapi merupakan operasi yang tidak valid (NaN). Pelajari lebih lanjut tentang NaN

Di mana kita akan menggunakan nilai presisi?

Hampir dimana-mana

Jika Anda bekerja dengan data dalam jumlah kecil – seperti tanda rata-rata, luas segitiga, dll… gunakan ganda secara default. Namun, jika Anda berurusan dengan banyak angka yang melibatkan presisi tinggi dan pembulatan apa pun dapat mengubah hasil – seperti trigonometri, lebar rambut manusia, jaringan saraf, putaran elektron, koordinat lokasi, dan sebagainya – itu adalah . Sementara Java mendorong Anda untuk menggunakan ganda, dalam bahasa seperti C Anda memiliki fleksibilitas untuk menggunakan apapun yang Anda inginkan

Deklarasi Java tipikal akan terlihat seperti –

float number1 = (float) 12.211111111111;
_

Sekarang, jika Anda tidak melakukan typecasting itu, kode Anda tidak akan dikompilasi di Java. Saat Anda melakukannya, saat mencetak angka, Anda hanya akan mendapatkan 6 digit setelah titik desimal

Pertimbangkan program sederhana mengalikan dua angka - 1. 42222*234. 56433 ditulis dalam C

Ini bisa berupa apa saja seperti massa atom atau gaya gravitasi yang harus memiliki semua digit signifikannya utuh

float num1 = 1.42222*234.56433;
double num2 = 1.42222*234.56433;
printf("%f", num1);
printf("%.10f", num2);

Sementara num1 mengembalikan nilai sebagai 333. 602081, num2 dinyatakan sebagai pengembalian ganda 333. 6020814126, tepatnya hingga 10 digit seperti yang disebutkan dalam pernyataan printf kami. Kita juga bisa mencetak float sebagai double dan sebaliknya, semuanya tergantung bagaimana kita menulis pernyataan printf. Menulis %f akan menghapus beberapa digit penting, sedangkan ketika kita menentukan jumlah digit, seluruh nilai sampai yang akan dicetak. Untuk mencetak nilai dalam bentuk eksponensial, Anda harus menggunakan “%e”

Di Java, seperti yang telah kita lihat sebelumnya, hanya jika kita mengetik ke (float), nilainya akan dicetak. Java menganggap semua nilai desimal presisi tinggi sebagai dua kali lipat secara default

float values;
double doubes;
values = (float) (1.42222*234.56433);
doubes = 1.42222*234.56433;
System.out.println(values);
System.out.println(doubes);

menghasilkan 333. 60208 dan 333. 6020814126 masing-masing

Perbandingan logis

We use the operators <, <=, >= and > to compare float and double values. With integers, we can use != and = but here we don’t because the latter operators are less precise.

Jelas, ketika float digunakan, perbandingan yang tepat tidak mungkin dilakukan karena presisi hanya sampai 5-6 digit. Setiap perbedaan dalam angka tidak tertangkap

float number1 = (float) 3.1434343;
float number2 = (float) 3.1434343333;
 if(number1 == number2)
 System.out.println("equal");
 else
 System.out.println("not equal");

double number3 = 3.1434343;
double number4 = 3.1434343333;
 if(number3 == number4)
 System.out.println("equal");
 else
 System.out.println("not equal");
_

Kira-kira hasilnya akan seperti apa?

Anda mungkin sudah bisa menebaknya – yang pertama akan memberikan “sama”, sedangkan yang kedua akan memberikan “tidak sama”

Untuk menghindari typecasting setiap kali kita menulis angka dalam float, kita dapat mengakhiri angka dengan 'f'. Sebagai contoh,

float number1 = 3.1434343f;

Desimal besar

NET dan Java juga memiliki kelas Desimal/BigDecimal yang memiliki presisi lebih tinggi dari dua kali lipat. Untuk perhitungan yang lebih akurat seperti pada aplikasi keuangan dan perbankan, Desimal digunakan karena lebih mengurangi kesalahan pembulatan

ganda panjang

Beberapa bahasa pemrograman seperti C menggunakan long double yang memberikan presisi lebih dari double. Lihat berbagai tipe data C

Pembagian dengan float dan double

Sama seperti pada perkalian atau penjumlahan, pembagian akan memberikan angka yang lebih presisi dalam rangkap dua. Perhatikan contoh sederhana ini –

float number1 = 3.1434343f;
double number2 = 3.1434343;
float divide = 22/7f;
// first let us print the result as double
double result1 = number1/divide;
/* the same result but now it is a float value,
note the difference in significant digits */
float result3 = number1/divide;
// the double value
double result2 = number2/divide;
System.out.println(result1); // 1.0001837015151978
System.out.println(result3); // 1.0001837
System.out.println(result2); // 1.000183662587488
_

Ini sangat berguna ketika penyebut lebih besar dari pembilang dan hasilnya dalam pecahan kecil seperti –

float pie = 22/7f;
float pieby4096 = pie/4096;
double dpie = 22/7d;
double dpieby4096 = dpie/4096;
System.out.println("Float Pie is - " + pie);
System.out.println("Double pie is - " + dpie);
System.out.println("Float Pie divided by 4096 - " + pieby4096);
System.out.println("Double Pie divided by 4096 - " + dpieby4096);
double pieby4096usingfloatpie = pie/4096;
System.out.println("Float Pie divided by 4096 with result as double - " + pieby4096usingfloatpie);

Lihat hasil –

Float Pie is - 3.142857
Double pie is - 3.142857142857143
Float Pie divided by 4096 - 7.672991E-4
Double Pie divided by 4096 - 7.672991071428571E-4
Float Pie divided by 4096 with result as double - 7.672990905120969E-4
_

Perhatikan 3 hasil terakhir. Pai yang kita pilih untuk membagi angka membuat perbedaan pada angka signifikan hasilnya. Inilah presisi yang sedang kita bicarakan

Di Jawa, dimungkinkan untuk menggabungkan string dengan double dan float menggunakan + operator

String str = "test";
float flo = 23.2f;
String concat = str + flo;
double dou = 3.45555555;
concat += dou;
System.out.println(concat); // result will be test23.23.45555555
_

Mengambang vs Ganda. Perbandingan kepala ke kepala

Sekarang kita tahu apa itu float dan double, akan baik untuk membuat tabel perbedaan untuk referensi cepat dan rekap

FloatDoubleNilai presisi tunggalNilai presisi gandaDapat menyimpan Hingga 7 digit signifikanMenyimpan hingga 15 digit signifikanMenempati 4 byte memori (32 bit IEEE 754)Menempati 8 byte memori (64-bit IEEE 754)Jika ada lebih dari 7 digit, nilai dibulatkan7

float fnum = 2. 344f;

atau

float fnum = (float) 2. 344;

Double adalah tipe titik desimal default untuk Java

dnum ganda = 2. 344;

Jika presisi tinggi tidak diperlukan dan program hanya membutuhkan sejumlah besar angka desimal untuk disimpan, float adalah cara hemat biaya untuk menyimpan data dan menghemat memori. Ganda lebih mahal, menempati lebih banyak ruang dan lebih efektif bila diperlukan lebih banyak presisi. Misalnya, konversi mata uang, laporan dan transaksi keuangan, perhitungan ilmiah, dll…

Menguasai Struktur Data & Algoritma menggunakan C dan C++

Kesimpulan

Inilah perbedaan lengkap antara Double vs Float; . Jika Anda mengonversi terlalu sering, presisi mungkin akan hilang dan Anda akan kehilangan seluruh tujuan penggunaan ganda

Selama tahap awal pengembangan, putuskan dan tentukan apakah Anda ingin menggunakan float atau double dan pertahankan hal yang sama di seluruh aplikasi. Ini juga merupakan ide bagus untuk mengetahui bagaimana data tertentu disimpan dalam database. Jika aplikasi Anda harus berkinerja baik, gunakan float, karena dengan set data yang besar, double dapat membuat program Anda lambat. Jika data Anda membutuhkan ketelitian lebih, gunakan ganda

Apa perbedaan antara double dan float?

float dan double keduanya memiliki kapasitas yang berbeda-beda dalam hal jumlah digit desimal yang dapat dipegangnya. float dapat menampung hingga 7 digit desimal secara akurat sedangkan double dapat menampung hingga 15 . Mari kita lihat beberapa contoh untuk menunjukkan ini.

Apakah 1. 5 mengambang atau ganda?

Dan alasan perbandingan berhasil dengan 1. 5 adalah 1. 5 dapat direpresentasikan persis sebagai float dan sebagai double ; .

Mengapa kita menggunakan double di PHP?

Apa artinya $$ (dolar dolar atau dolar ganda) dalam PHP ? . $$x (dolar ganda) adalah variabel referensi yang menyimpan nilai yang dapat diakses dengan menggunakan simbol $ sebelum nilai $x .

Apa itu ganda dalam PHP?

Variabel dapat menyimpan data dari tipe yang berbeda, dan tipe data yang berbeda dapat melakukan hal yang berbeda. PHP mendukung tipe data berikut. Rangkaian. Bilangan bulat. Float ( angka floating point - disebut juga ganda)