[{"data":1,"prerenderedAt":178},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-mengenal-tipe-data-float-pada-java-with-latest":41},{"navigations":4},[5,20],{"collection":6,"item":7},"series",{"__typename":6,"title":8,"slug":9,"children_series":10},"Artikel","all",[11,14,17],{"title":12,"slug":13},"Algoritma dan Struktur Data","algoritma-struktur-data",{"title":15,"slug":16},"Konsep Dasar Pemrograman","konsep-dasar-pemrograman",{"title":18,"slug":19},"Kecerdasan Artifisial","kecerdasan-artifisial",{"collection":6,"item":21},{"__typename":6,"title":22,"slug":23,"children_series":24},"Tutorial","tutorial",[25,28,31,34],{"title":26,"slug":27},"Belajar Java","belajar-java",{"title":29,"slug":30},"Belajar Pascal","belajar-pascal",{"title":32,"slug":33},"Belajar Python","belajar-python",{"title":35,"slug":36},"Belajar Golang","belajar-golang",{"name":38,"url":39,"show":40},"CC BY-SA","https://creativecommons.org/licenses/by-sa/4.0/",false,{"article":42,"renderedBody":100,"renderedTakeaway":101,"latestArticles":102,"toc":154},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":54,"takeway":55,"body":56,"authors":57,"series":63},"58","Mengenal Tipe Data Float pada Java","mengenal-tipe-data-float-pada-java","Float atau floating point merupakan tipe data yang dapat menampung literal bilangan desimal dan pecahan.","2023-02-15T00:00:00.000Z",{"id":49},"d915e395-5e17-40c1-ab53-677d9f1252d3",[51,52,53],"java","tipe-data","float",4,null,"Setelah mengenal tipe data [integer](/p/mengenal-tipe-data-integer-pada-java), kali ini kita akan membahas tentang tipe data numerik lainnya, yaitu float.\n\n## Tentang Tipe Data Float\n\n**Floating Points** atau biasa disebut **float** merupakan tipe data standar yang dapat menampung bilangan desimal. Kalau [integer](/p/mengenal-tipe-data-integer-pada-java) hanya bisa menampung bilangan bulat, float ini bisa menampung bilangan pecahan juga. Contohnya: `1.5`, `2.2`, `3.14`, dan lain sebagainya.\n\n### Sub Tipe Data Float\n\nTipe data ini dapat dibagi lagi menjadi 2 berdasarkan presisinya — banyaknya angka di belakang koma, yaitu:\n\n- **float** — Tipe data berukuran 32-bit (4 byte) yang dapat menampung 6 hingga 7 angka di belakang koma. Tipe primitifnya `float` sedangkan bentuk objeknya adalah `Float`.\n- **double** — Tipe data berukuran 64-bit (8 byte) yang dapat menampung 15 hingga 16 angka di belakang koma. Tipe primitifnya `double` sedangkan bentuk objeknya adalah `Double`.\n\nBisa kita lihat, semakin tinggi presisinya semakin besar ukurannya. Karena komputer sekarang yang semakin canggih, penggunaan `double` tidak memberi perbedaan yang signifikan dibanding `float`. Namun ada baiknya untuk \"menghemat\" memori kita menggunakan `float` sebisa mungkin.\n\n### Literal Float\n\nLiteral float adalah semua angka real. Meliputi bilangan positif, negatif, bulat, pecahan, dan nol.\n\nTidak seperti lazimnya angka desimal di Indonesia yang dipisahkan dengan koma (`,`), angka desimal pada Java dipisahkan dengan titik (`.`).\n\nContohnya saja:\n\n```java\ndouble PI = 3.141592653589793; // 15 angka di belakang koma\n\nfloat  tiga  = 3;   // bilangan bulat\ndouble empat = 4.0; // bilangan bulat\n```\n\n### Menggunakan Penanda Huruf\n\nKita juga bisa menambahkan huruf `f` atau `d` untuk menandakan bahwa bilangan tersebut merupakan float atau double. Hal ini sangat disarankan sebagai penanda tipe data suatu literal.\n\nContohnya saja:\n\n```java\nfloat  pi = 3.141592f;          // akhiran `f` harus ada\ndouble PI = 3.141592653589793d; // akhiran `d` opsional\n\nfloat  tiga  = 3f;   // akhiran `f` opsional\nfloat  empat = 4.0f; // akhiran `f` harus ada\ndouble lima  = 5d;   // akhiran `d` opsional\n```\n\nSecara default Java akan membaca bilangan desimal sebagai tipe data double, oleh karena itu perlu akhiran `f` sebagai penanda bahwa literal tersebut adalah float. Jika tidak maka program akan error, karena Java tidak bisa mengkonversi double ke float data secara otomatis.\n\nDalam melakukan operasi bilangan — khususnya pembagian — tanda ini sangat penting karena dapat mempengaruhi hasil perhitungan. Akan kita bahas lebih lanjut pada bagian selanjutnya.\n\n### Menggunakan Notasi Saintifik\n\nLiteral float juga bisa dibuat dengan notasi saintifik. Kalau lupa, notasi saintifik itu yang menggunakan perkalian pangkat 10. Lebih lanjut bisa dilihat di [sini](https://en.wikipedia.org/wiki/Scientific_notation).\n\nJava menggunakan notasi `e` untuk menuliskan literal. Contohnya seperti ini:\n\n```java\ndouble seribu  = 1e3;  // 1 * 10^3 = 1000\nfloat  duaJuta = 2e6f; // 2 * 10^6 = 2000000\n\ndouble bilanganKecil  = 7e-10; // 0.0000000007\nfloat  bilanganKecil2 = 4e-5f; // 0.00004\n```\n\n## Operasi pada Tipe Data Float\n\nSemua operasi yang bisa diterapkan pada integer bisa diterapkan juga pada float. Ada aritmatika, assignment aritmatika, dan juga unary operator. Lebih lanjut bisa dilihat di pembahasan [sebelumnya](/p/mengenal-tipe-data-integer-pada-java).\n\nMungkin yang sedikit membedakan adalah operasi pembagiannya. Seperti yang kita singgung sebelumnya, pembubuhan huruf `f` atau `d` dapat berpengaruh terhadap hasil perhitungan.\n\nMari kita lihat contohnya.\n\n```java\npublic class TipeDataFloat{\n  public static void main(String[] args) {\n    float a = 22;\n    float b = 7;\n    float hasil = a / b;\n\n    System.out.printf(\"hasil dari %.2f / %.2f adalah %.2f\", a, b, hasil);\n  }\n}\n```\n\n> Perhatian! huruf `f` di atas bukan bagian dari literal float, melainkan bagian dari template string untuk mencetak tipe data float. Lebih lanjut bisa dibaca di [sini](/p/sistem-output-pada-bahasa-java)\n\nKalau dijalankan maka hasilnya akan seperti ini:\n\n```\nhasil dari 22.00 / 7.00 adalah 3.14\n```\n\nSejauh ini aman ya.\n\nSekarang kita coba isikan variabel `hasil` dengan operasi pembagian literal integer. Kita akan ubah kode di atas menjadi seperti ini:\n\n```java\npublic class TipeDataFloat{\n  public static void main(String[] args) {\n    float hasil = 22 / 7;\n\n    System.out.printf(\"hasil dari 22 / 7 adalah %.2f\", hasil);\n  }\n}\n```\n\nSekarang coba jalankan kode tersebut dan lihat hasilnya. Pasti hasil perhitungannya akan salah. Alih-alih mencetak angka 3.14 malah mencetak angka 3.00.\n\n```\nhasil dari 22 / 7 adalah 3.00\n```\n\n**Nah loh kenapa bisa begitu?**\n\nIni karena kita menggunakan literal integer untuk melakukan pembagian. Ingat, operasi pembagian pada integer pasti akan dibulatkan, tidak bisa menghasilkan bilangan desimal.\n\nAkibatnya adalah pembagian integer 22 dan 7 — yang menghasilkan angka bulat 3 — dimasukkan ke dalam variabel `hasil`. Sehingga yang masuk ke variabel `hasil` adalah murni hasil perhitungan integer tanpa memperdulikan tipe data dari variabel `hasil`.\n\nNah untuk mengatasi masalah ini kita bisa menggunakan literal `float` dengan membubuhkan huruf `f` di belakang angka. Sehingga kodenya berubah menjadi seperti ini:\n\n```java\npublic class TipeDataFloat{\n  public static void main(String[] args) {\n    float hasil = 22f / 7f;\n    // bisa juga ditulis `22f / 7` atau `22 / 7f`\n    // tapi supaya konsisten sebaiknya bubuhkan `f` di keduanya\n\n    System.out.printf(\"hasil dari 10 / 8 adalah %.2f\", hasil);\n  }\n}\n```\n\n## Selanjutnya\n\nSetelah rampung 2 tipe data numerik pada Java (integer dan float), selanjutnya kita akan beralih ke tipe data yang bisa menampung huruf dan karakter.\n\nSelanjutnya kita akan membahas tentang tipe data 'char' pada bahasa Java.\n\nSemoga bermanfaat, selamat berkoding ria 👋",[58],{"authors_id":59},{"name":60,"slug":61,"role":62,"profile_picture":55},"Daffa Izzuddin","izzudd","Writer",{"id":64,"title":65,"slug":66,"articles":67,"parent_series":90},"22","Variabel, Tipe Data, dan Operasi","java-variabel-tipe-data",[68,78,87],{"id":69,"title":70,"slug":71,"excerpt":72,"thumbnail_image":73,"tags":75},"56","Tipe Data pada Bahasa Java","tipe-data-pada-bahasa-java","Tipe data adalah atribut yang menempel pada sebuah data untuk menentukan perlakuan terhadap data tersebut.",{"id":74},"c67f5e59-a088-4660-9a0f-55f4f7c4a37b",[51,52,76,77],"konsep","dasar",{"id":79,"title":80,"slug":81,"excerpt":82,"thumbnail_image":83,"tags":85},"57","Mengenal Tipe Data Integer pada Java","mengenal-tipe-data-integer-pada-java","Integer, sesuai namanya merupakan tipe data yang hanya bisa menampung bilangan bulat saja (negatif, nol, dan positif)",{"id":84},"a39127be-6eeb-49cb-9ee9-7f9c1b9f28c1",[51,52,86],"integer",{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":88,"tags":89},{"id":49},[51,52,53],{"id":91,"title":26,"slug":27,"parent_series":92,"children_series":94},"13",{"id":93,"title":22,"slug":23,"parent_series":55},"1",[95,99],{"id":96,"title":97,"slug":98,"cover_image":55},"21","Berkenalan dengan Java","java-intro",{"id":64,"title":65,"slug":66,"cover_image":55},"\u003Cp>Setelah mengenal tipe data \u003Ca href=\"/p/mengenal-tipe-data-integer-pada-java\">integer\u003C/a>, kali ini kita akan membahas tentang tipe data numerik lainnya, yaitu float.\u003C/p>\n\u003Ch2 id=\"tentang-tipe-data-float\">Tentang Tipe Data Float\u003C/h2>\n\u003Cp>\u003Cstrong>Floating Points\u003C/strong> atau biasa disebut \u003Cstrong>float\u003C/strong> merupakan tipe data standar yang dapat menampung bilangan desimal. Kalau \u003Ca href=\"/p/mengenal-tipe-data-integer-pada-java\">integer\u003C/a> hanya bisa menampung bilangan bulat, float ini bisa menampung bilangan pecahan juga. Contohnya: \u003Ccode>1.5\u003C/code>, \u003Ccode>2.2\u003C/code>, \u003Ccode>3.14\u003C/code>, dan lain sebagainya.\u003C/p>\n\u003Ch3 id=\"sub-tipe-data-float\">Sub Tipe Data Float\u003C/h3>\n\u003Cp>Tipe data ini dapat dibagi lagi menjadi 2 berdasarkan presisinya — banyaknya angka di belakang koma, yaitu:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>float\u003C/strong> — Tipe data berukuran 32-bit (4 byte) yang dapat menampung 6 hingga 7 angka di belakang koma. Tipe primitifnya \u003Ccode>float\u003C/code> sedangkan bentuk objeknya adalah \u003Ccode>Float\u003C/code>.\u003C/li>\n\u003Cli>\u003Cstrong>double\u003C/strong> — Tipe data berukuran 64-bit (8 byte) yang dapat menampung 15 hingga 16 angka di belakang koma. Tipe primitifnya \u003Ccode>double\u003C/code> sedangkan bentuk objeknya adalah \u003Ccode>Double\u003C/code>.\u003C/li>\n\u003C/ul>\n\u003Cp>Bisa kita lihat, semakin tinggi presisinya semakin besar ukurannya. Karena komputer sekarang yang semakin canggih, penggunaan \u003Ccode>double\u003C/code> tidak memberi perbedaan yang signifikan dibanding \u003Ccode>float\u003C/code>. Namun ada baiknya untuk &quot;menghemat&quot; memori kita menggunakan \u003Ccode>float\u003C/code> sebisa mungkin.\u003C/p>\n\u003Ch3 id=\"literal-float\">Literal Float\u003C/h3>\n\u003Cp>Literal float adalah semua angka real. Meliputi bilangan positif, negatif, bulat, pecahan, dan nol.\u003C/p>\n\u003Cp>Tidak seperti lazimnya angka desimal di Indonesia yang dipisahkan dengan koma (\u003Ccode>,\u003C/code>), angka desimal pada Java dipisahkan dengan titik (\u003Ccode>.\u003C/code>).\u003C/p>\n\u003Cp>Contohnya saja:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"double%20PI%20%3D%203.141592653589793%3B%20%2F%2F%2015%20angka%20di%20belakang%20koma%0A%0Afloat%20%20tiga%20%20%3D%203%3B%20%20%20%2F%2F%20bilangan%20bulat%0Adouble%20empat%20%3D%204.0%3B%20%2F%2F%20bilangan%20bulat\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>double PI = 3.141592653589793; // 15 angka di belakang koma\n\nfloat  tiga  = 3;   // bilangan bulat\ndouble empat = 4.0; // bilangan bulat\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch3 id=\"menggunakan-penanda-huruf\">Menggunakan Penanda Huruf\u003C/h3>\n\u003Cp>Kita juga bisa menambahkan huruf \u003Ccode>f\u003C/code> atau \u003Ccode>d\u003C/code> untuk menandakan bahwa bilangan tersebut merupakan float atau double. Hal ini sangat disarankan sebagai penanda tipe data suatu literal.\u003C/p>\n\u003Cp>Contohnya saja:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"float%20%20pi%20%3D%203.141592f%3B%20%20%20%20%20%20%20%20%20%20%2F%2F%20akhiran%20%60f%60%20harus%20ada%0Adouble%20PI%20%3D%203.141592653589793d%3B%20%2F%2F%20akhiran%20%60d%60%20opsional%0A%0Afloat%20%20tiga%20%20%3D%203f%3B%20%20%20%2F%2F%20akhiran%20%60f%60%20opsional%0Afloat%20%20empat%20%3D%204.0f%3B%20%2F%2F%20akhiran%20%60f%60%20harus%20ada%0Adouble%20lima%20%20%3D%205d%3B%20%20%20%2F%2F%20akhiran%20%60d%60%20opsional\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>float  pi = 3.141592f;          // akhiran `f` harus ada\ndouble PI = 3.141592653589793d; // akhiran `d` opsional\n\nfloat  tiga  = 3f;   // akhiran `f` opsional\nfloat  empat = 4.0f; // akhiran `f` harus ada\ndouble lima  = 5d;   // akhiran `d` opsional\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Secara default Java akan membaca bilangan desimal sebagai tipe data double, oleh karena itu perlu akhiran \u003Ccode>f\u003C/code> sebagai penanda bahwa literal tersebut adalah float. Jika tidak maka program akan error, karena Java tidak bisa mengkonversi double ke float data secara otomatis.\u003C/p>\n\u003Cp>Dalam melakukan operasi bilangan — khususnya pembagian — tanda ini sangat penting karena dapat mempengaruhi hasil perhitungan. Akan kita bahas lebih lanjut pada bagian selanjutnya.\u003C/p>\n\u003Ch3 id=\"menggunakan-notasi-saintifik\">Menggunakan Notasi Saintifik\u003C/h3>\n\u003Cp>Literal float juga bisa dibuat dengan notasi saintifik. Kalau lupa, notasi saintifik itu yang menggunakan perkalian pangkat 10. Lebih lanjut bisa dilihat di \u003Ca href=\"https://en.wikipedia.org/wiki/Scientific_notation\">sini\u003C/a>.\u003C/p>\n\u003Cp>Java menggunakan notasi \u003Ccode>e\u003C/code> untuk menuliskan literal. Contohnya seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"double%20seribu%20%20%3D%201e3%3B%20%20%2F%2F%201%20*%2010%5E3%20%3D%201000%0Afloat%20%20duaJuta%20%3D%202e6f%3B%20%2F%2F%202%20*%2010%5E6%20%3D%202000000%0A%0Adouble%20bilanganKecil%20%20%3D%207e-10%3B%20%2F%2F%200.0000000007%0Afloat%20%20bilanganKecil2%20%3D%204e-5f%3B%20%2F%2F%200.00004\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>double seribu  = 1e3;  // 1 * 10^3 = 1000\nfloat  duaJuta = 2e6f; // 2 * 10^6 = 2000000\n\ndouble bilanganKecil  = 7e-10; // 0.0000000007\nfloat  bilanganKecil2 = 4e-5f; // 0.00004\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch2 id=\"operasi-pada-tipe-data-float\">Operasi pada Tipe Data Float\u003C/h2>\n\u003Cp>Semua operasi yang bisa diterapkan pada integer bisa diterapkan juga pada float. Ada aritmatika, assignment aritmatika, dan juga unary operator. Lebih lanjut bisa dilihat di pembahasan \u003Ca href=\"/p/mengenal-tipe-data-integer-pada-java\">sebelumnya\u003C/a>.\u003C/p>\n\u003Cp>Mungkin yang sedikit membedakan adalah operasi pembagiannya. Seperti yang kita singgung sebelumnya, pembubuhan huruf \u003Ccode>f\u003C/code> atau \u003Ccode>d\u003C/code> dapat berpengaruh terhadap hasil perhitungan.\u003C/p>\n\u003Cp>Mari kita lihat contohnya.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"public%20class%20TipeDataFloat%7B%0A%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20float%20a%20%3D%2022%3B%0A%20%20%20%20float%20b%20%3D%207%3B%0A%20%20%20%20float%20hasil%20%3D%20a%20%2F%20b%3B%0A%0A%20%20%20%20System.out.printf(%22hasil%20dari%20%25.2f%20%2F%20%25.2f%20adalah%20%25.2f%22%2C%20a%2C%20b%2C%20hasil)%3B%0A%20%20%7D%0A%7D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>public class TipeDataFloat{\n  public static void main(String[] args) {\n    float a = 22;\n    float b = 7;\n    float hasil = a / b;\n\n    System.out.printf(\"hasil dari %.2f / %.2f adalah %.2f\", a, b, hasil);\n  }\n}\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cblockquote>\n\u003Cp>Perhatian! huruf \u003Ccode>f\u003C/code> di atas bukan bagian dari literal float, melainkan bagian dari template string untuk mencetak tipe data float. Lebih lanjut bisa dibaca di \u003Ca href=\"/p/sistem-output-pada-bahasa-java\">sini\u003C/a>\u003C/p>\n\u003C/blockquote>\n\u003Cp>Kalau dijalankan maka hasilnya akan seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"hasil%20dari%2022.00%20%2F%207.00%20adalah%203.14\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>hasil dari 22.00 / 7.00 adalah 3.14\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Sejauh ini aman ya.\u003C/p>\n\u003Cp>Sekarang kita coba isikan variabel \u003Ccode>hasil\u003C/code> dengan operasi pembagian literal integer. Kita akan ubah kode di atas menjadi seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"public%20class%20TipeDataFloat%7B%0A%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20float%20hasil%20%3D%2022%20%2F%207%3B%0A%0A%20%20%20%20System.out.printf(%22hasil%20dari%2022%20%2F%207%20adalah%20%25.2f%22%2C%20hasil)%3B%0A%20%20%7D%0A%7D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>public class TipeDataFloat{\n  public static void main(String[] args) {\n    float hasil = 22 / 7;\n\n    System.out.printf(\"hasil dari 22 / 7 adalah %.2f\", hasil);\n  }\n}\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Sekarang coba jalankan kode tersebut dan lihat hasilnya. Pasti hasil perhitungannya akan salah. Alih-alih mencetak angka 3.14 malah mencetak angka 3.00.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"hasil%20dari%2022%20%2F%207%20adalah%203.00\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>hasil dari 22 / 7 adalah 3.00\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>\u003Cstrong>Nah loh kenapa bisa begitu?\u003C/strong>\u003C/p>\n\u003Cp>Ini karena kita menggunakan literal integer untuk melakukan pembagian. Ingat, operasi pembagian pada integer pasti akan dibulatkan, tidak bisa menghasilkan bilangan desimal.\u003C/p>\n\u003Cp>Akibatnya adalah pembagian integer 22 dan 7 — yang menghasilkan angka bulat 3 — dimasukkan ke dalam variabel \u003Ccode>hasil\u003C/code>. Sehingga yang masuk ke variabel \u003Ccode>hasil\u003C/code> adalah murni hasil perhitungan integer tanpa memperdulikan tipe data dari variabel \u003Ccode>hasil\u003C/code>.\u003C/p>\n\u003Cp>Nah untuk mengatasi masalah ini kita bisa menggunakan literal \u003Ccode>float\u003C/code> dengan membubuhkan huruf \u003Ccode>f\u003C/code> di belakang angka. Sehingga kodenya berubah menjadi seperti ini:\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">JAVA\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"public%20class%20TipeDataFloat%7B%0A%20%20public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%20%20%20%20float%20hasil%20%3D%2022f%20%2F%207f%3B%0A%20%20%20%20%2F%2F%20bisa%20juga%20ditulis%20%6022f%20%2F%207%60%20atau%20%6022%20%2F%207f%60%0A%20%20%20%20%2F%2F%20tapi%20supaya%20konsisten%20sebaiknya%20bubuhkan%20%60f%60%20di%20keduanya%0A%0A%20%20%20%20System.out.printf(%22hasil%20dari%2010%20%2F%208%20adalah%20%25.2f%22%2C%20hasil)%3B%0A%20%20%7D%0A%7D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>public class TipeDataFloat{\n  public static void main(String[] args) {\n    float hasil = 22f / 7f;\n    // bisa juga ditulis `22f / 7` atau `22 / 7f`\n    // tapi supaya konsisten sebaiknya bubuhkan `f` di keduanya\n\n    System.out.printf(\"hasil dari 10 / 8 adalah %.2f\", hasil);\n  }\n}\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Ch2 id=\"selanjutnya\">Selanjutnya\u003C/h2>\n\u003Cp>Setelah rampung 2 tipe data numerik pada Java (integer dan float), selanjutnya kita akan beralih ke tipe data yang bisa menampung huruf dan karakter.\u003C/p>\n\u003Cp>Selanjutnya kita akan membahas tentang tipe data &#39;char&#39; pada bahasa Java.\u003C/p>\n\u003Cp>Semoga bermanfaat, selamat berkoding ria 👋\u003C/p>\n","",[103,116,131,143],{"id":104,"title":105,"slug":106,"excerpt":107,"thumbnail_image":108,"tags":110},"46","Mengapa C Mulai Ditinggalkan: Duel Filosofi Keamanan Rust vs Kesederhanaan Zig","mengapa-c-mulai-ditinggalkan-duel-filosofi-rust-vs-zig","Pernah denger kalau sekitar 70% celah keamanan kritis software modern itu asalnya dari bahasa C? Iya, bahasa yang udah jadi fondasi internet ini 😅. Yuk, kita bedah duel filosofi Rust vs Zig dan cari tahu mana yang pas buat proyek kalian!",{"id":109},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[111,112,113,114,115],"system-programming","rust","zig","c","memory-safety",{"id":117,"title":118,"slug":119,"excerpt":120,"thumbnail_image":121,"tags":123},"45","Rate Limiting Algorithms: Token Bucket vs Leaky Bucket vs Sliding Window","rate-limiting-algorithms-token-bucket-leaky-bucket-sliding-window","Udah tahu kenapa *rate limiting* itu wajib, tapi masih bingung beda Token Bucket, Leaky Bucket, Fixed Window, dan Sliding Window? Yuk, kita adu empat algoritma ini bareng-bareng dan cari tahu mana yang paling pas buat API kalian!",{"id":122},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[124,125,126,127,128,129,130],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":132,"title":133,"slug":134,"excerpt":135,"thumbnail_image":136,"tags":138},"44","Transactional Outbox Pattern: Solusi Konsistensi Database dan Message Broker Tanpa 2PC","transactional-outbox-pattern-konsistensi-database-message-broker","Pernah nggak kalian lihat pesanan udah masuk database, tapi email konfirmasinya nggak pernah kekirim? Itu gejala *dual-write problem*. Yuk, kita bedah Transactional Outbox Pattern biar data dan *event* kalian nggak lagi berselisih paham!",{"id":137},"e3c617fd-1486-4b82-b937-94fbec846c77",[124,139,129,140,141,125,142],"microservices","database","message-broker","postgresql",{"id":144,"title":145,"slug":146,"excerpt":147,"thumbnail_image":148,"tags":150},"43","Dead Letter Queue (DLQ) & Retry Policy: Menyelamatkan Pesan Nyasar di RabbitMQ Tanpa Bikin Worker Macet","dead-letter-queue-retry-policy-rabbitmq-resilient-messaging","Pernah nggak sih, *worker* kalian nolak satu pesan terus-terusan sampai CPU melonjak 100%? Itu namanya *poison message loop*, jebakan klasik di RabbitMQ. Yuk, kita bahas cara pasang *retry policy* dan *dead letter queue* yang bener!",{"id":149},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[151,141,124,129,139,152,153],"rabbitmq","async","python",[155,159,163,166,169,172,175],{"text":156,"depth":157,"id":158},"Tentang Tipe Data Float",2,"tentang-tipe-data-float",{"text":160,"depth":161,"id":162},"Sub Tipe Data Float",3,"sub-tipe-data-float",{"text":164,"depth":161,"id":165},"Literal Float","literal-float",{"text":167,"depth":161,"id":168},"Menggunakan Penanda Huruf","menggunakan-penanda-huruf",{"text":170,"depth":161,"id":171},"Menggunakan Notasi Saintifik","menggunakan-notasi-saintifik",{"text":173,"depth":157,"id":174},"Operasi pada Tipe Data Float","operasi-pada-tipe-data-float",{"text":176,"depth":157,"id":177},"Selanjutnya","selanjutnya",1791045068317]