Karakteristik Excel | Alasan Hasil Perhitungan Menyimpang Akibat Akumulasi Angka Desimal dan Pembahasan tentang IEEE 754

Halo semuanya.

Ini Enta.

Pernahkah Anda mengalami hal seperti ini saat menghitung jumlah total di Excel, yaitu “setelah dijumlahkan semuanya, hasilnya berbeda 1 yen dari perhitungan manual”?

Dalam perhitungan biaya pekerjaan lereng pun, jika kita terus menggabungkan rumus-rumus seperti luas × harga satuan × pajak pertambahan nilai,Pada baris terakhir, pasti akan ada selisih sebesar 1 yen atau 1 m²Itu adalah suatu fenomena.

Ini bukan bug di Excel, melainkan...IEEE 754, spesifikasi standar internasional untuk bilangan floating-pointItulah sebabnya, hehe

Dulu aku pernah sangat kesal sampai-sampai mencari tahu soal ini, jadi aku bagikan juga ke kalian semua, hehe

Meski begitu, apakah sekarang ini orang masih sering menggunakan Excel untuk menghitung?

Saya masih penggemar Excel!

Ini yang paling serba bisa, jadi... w


Kembali ke topik utama

Kali ini,Sebenarnya Apa Itu Kesalahan Akumulasi Angka Pecahan yang Terjadi di Excel (dan Banyak Perangkat Lunak Lainnya)namun,Spesifikasi bilangan floating-point presisi ganda IEEE 754dari,

Cara yang benar untuk mengatasinya menggunakan fungsi ROUNDSaya akan menjelaskan pengalaman saya saat mengerjakan perhitungan kuantitas sambil merasa kesal.

Hal ini secara jelas tercantum dalam dokumentasi resmi Microsoft, sehingga dasarnya 100% pasti benar.

Contoh klasik selisih 1 yen akibat akumulasi angka pecahan

Sifat Khas Excel | Spesifikasi IEEE 754

Singkatnya,Kesalahan perhitungan di Excel bukanlah bug, melainkan hasil dari penerapan yang ketat terhadap standar perhitungan bilangan pecahan floating-point IEEE 754.

Rasanya kayak, “Hah?” ya.

 

Microsoft secara tegas menyatakan hal berikut mengenai akurasi perhitungan Excel: Microsoft Excel dirancang berdasarkan spesifikasi IEEE 754, yang menentukan cara penyimpanan dan perhitungan bilangan desimal mengambang. Excel dapat menyimpan nilai-nilai mulai dari 1,79769313486232E308 hingga 2,2250738585072E-308, namun,Jumlah digit yang valid adalah maksimal 15 digitterbatas pada.

Dokumen Resmi Microsoft Learn “Penggunaan operasi bilangan pecahan mengambang dapat menghasilkan hasil yang tidak akurat di Excel”

Dengan kata lain, Excel secara internalSemua nilai diolah dalam sistem bilangan binerOleh karena itu, saat mengonversi angka yang ditulis dalam sistem desimal ke sistem biner,Kesalahan pembulatan...muncul.

Inilah inti dari fenomena tersebut, yaitu bahwa hal ini akan terus menumpuk seiring dengan bertambahnya perhitungan.

Mengapa terjadi kesalahan saat mengonversi dari bilangan desimal ke bilangan biner?

Bilangan desimal terbatas seperti “0,1”,Dalam sistem bilangan biner, angka tersebut akan menjadi bilangan desimal yang berulang tanpa hentiItulah penyebabnya.

Bilangan desimal Representasi bilangan biner Catatan
0.5 0.1 Dapat diungkapkan dengan tepat
0.25 0.01 Dapat diungkapkan dengan tepat
0.1 0,0001100110011… (berulang) Siklus tak terbatas, terjadi kesalahan pembulatan
0.2 0,0011001100110… (berulang) Seperti di atas
0.3 0,0100110011001… (berulang) Seperti di atas

Dalam IEEE 754 presisi ganda (64-bit), siklus tak berujung iniDisimpan dengan memotong pada digit tertentuOleh karena itu, akan timbul sedikit penyimpangan (sekitar ±2,8 × 10⁻¹⁷) (Microsoft Learn).

Mekanisme di mana angka desimal 0,1 yang dikonversi ke bilangan biner akan membentuk siklus tak berujung

Contoh konkret | Kesalahan umum yang terjadi di Excel

Pengetahuan Dasar | Arti TRUE dan FALSE

Sebelum membahas contoh konkret, di Excel BENAR / SALAH Mari kita ulas kembali.

Meskipun agak terlambat, ini adalah hal yang paling mendasar bagi kalian semua, jadi sebaiknya kalian benar-benar mengingatnya!

Di Excel “=” atau “>” atau “<” Jika menggunakan, hasilnya adalah TRUE (benar, sama/berlaku)FALSE (salah, tidak sama/tidak berlaku) dan akan kembali.

Rumus Arti Hasil
=1=1 Apakah 1 sama dengan 1? BENAR
=1=2 Apakah 1 dan 2 sama? SALAH
=5 > 3 Apakah 5 lebih besar dari 3? BENAR

Artinya =A1=0,3 "Maka akan mengembalikan nilai FALSE" = "Isi sel A1 tidak sama dengan 0,3" Artinya seperti itu. Dengan mengingat hal ini, silakan lihat contoh di bawah ini.

※Untuk kemudahan penulisan, rumus ditulis menggunakan tanda sama dengan (=) karakter penuh. Saat memasukkannya ke Excel, harap ganti dengan tanda sama dengan (=) karakter setengah.

Contoh 1|Misteri di balik 0,1 + 0,2 ≠ 0,3

Silakan masukkan hal berikut ke dalam sel Excel

Sel Rumus Hasil tampilan Nilai internal
A1 = 0,1 + 0,2 0.3 0,30000000000000004…
A2 =A1=0,3 SALAH (Secara ketat, keduanya tidak sama)

Meskipun angka yang ditampilkan benar, yaitu “0,3”,=A1=0,3 Jika dibandingkan, menjadi FALSE. Inilah keanehan IEEE 754 lol

Memang bikin kesal, ya w

Contoh 2|Jika dijumlahkan 100, hasilnya tidak lagi bilangan bulat

=SUM(A1:A100) Jika beberapa sel dijumlahkan seperti itu, kesalahan kecil pada masing-masing sel akanMenumpuk sebanyak 100 buah

  • Menjumlahkan 0,1 × 100 satu per satu → Hasilnya seperti 9,99999999999998…
  • Nilai harapan 10 terkadang tidak sepenuhnya cocok

Dalam penghitungan kuantitas pekerjaan sipil Ringkasan 100 baris untuk “luas × harga satuan” Jika demikian, pada baris terakhir Selisih ±beberapa yen hingga puluhan yen Itulah sebabnya hal itu terjadi.

Contoh akumulasi angka desimal yang menyebabkan hasil perhitungan SUM pada 100 sel Excel menyimpang dari bilangan bulat | Kesalahan umum dalam penghitungan jumlah]

Contoh 3|Akumulasi angka pecahan dalam perhitungan luas lereng (hal yang sering terjadi di lokasi pekerjaan lereng)

Contoh konkret pola yang sering terjadi dalam perhitungan luas pekerjaan lereng:

  • Teknik Kerangka Hukum:Menghitung luas dengan menggunakan akar kuadrat di Excel, lalu menjumlahkannya
  • Pada baris SUM terakhir, perhitungan manual dan Selisih 0,1–0,5 m²

Ini adalah situasi di mana setengah hari terbuang percuma tanpa tahu penyebabnya.

Dulu, aku benar-benar sering sekali menghitung pakai ini, aku masih ingat! w

Solusi Alternatif | Membulatkan Setiap Kali Menggunakan Fungsi ROUND

Hanya dengan mengatur “mengurangi jumlah digit desimal” pada format tampilan saja tidak cukup

Cara mengurangi jumlah digit desimal di “Format Sel” Excel adalah sebagai berikut,

Hanya dibulatkan secara tampilan saja, sedangkan nilai aslinya tetap memiliki kesalahan

Jika hasil perhitungan ini digunakan untuk perhitungan berikutnya, kesalahan tersebut akan tetap ada, sehingga hal ini bukanlah solusi yang mendasar.

Solusi yang sesungguhnya adalah membulatkan nilai itu sendiri dalam fungsiHal tersebut.

Penggunaan Fungsi ROUND

Fungsi Operasi Kegunaan
=ROUND(nilai, jumlah digit) Pembulatan Penggunaan Umum・Perhitungan Jumlah
=ROUNDDOWN(nilai, jumlah digit) Pemotongan Perhitungan yang mengutamakan keamanan
=ROUNDUP(nilai, jumlah digit) Pembulatan ke atas Jumlah pesanan bahan baku (untuk menghindari kekurangan)
=INT(nilai) Pembulatan ke bilangan bulat (bilangan negatif menggunakan fungsi lantai) Jika ingin membatasi pada nilai bilangan bulat
=FLOOR(nilai, satuan) Dibulatkan ke bawah pada satuan yang ditentukan Pembulatan ke kelipatan 10 yen dan 100 yen
=CEILING(nilai, satuan) Dibulatkan ke atas ke satuan yang ditentukan Seperti di atas, untuk mencegah kekurangan

Cara yang Benar untuk Membulatkan dan Menghilangkan Angka Desimal dengan Fungsi ROUND | Langkah-langkah Perhitungan Jumlah Uang

Dalam perhitungan total biaya dan perkiraan biaya, pastikan untuk melakukannya seperti ini!

Alur kerja yang saya lakukan dalam perhitungan biaya dan perkiraan biaya konstruksi adalah sebagai berikut:

  • Perhitungan jumlah selalu =ROUND(jumlah*harga satuan*1,10, 0) lalu dibulatkan ke dalam satuan yen setiap kali
  • Perhitungan kuantitas (luas dan volume) adalah =ROUND(nilai, 2) hingga dua digit desimal Gulung dan kencangkan
  • Jangan menghitung ulang pada baris terakhir hasil penghitungan(Jumlah sederhana dari nilai-nilai yang telah dibulatkan di tengah perhitungan)

Dengan ini, Anda dapat membuat laporan perhitungan yang hasilnya sama persis dengan perhitungan manual, tanpa selisih se-1 yen pun.

"Opsi Akurasi Perhitungan Excel" juga dapat digunakan bersamaan

Di Excel, ada Opsi “Hitung berdasarkan jumlah digit yang ditampilkan”Juga tersedia (File → Opsi → Pengaturan Lanjutan → Saat menghitung buku ini).

Jika opsi ini diaktifkan,Hitung nilai internal dengan membulatkannya sesuai dengan format tampilan selMereka akan melakukannya. Namun,

  • Berlaku untuk seluruh buku (tidak dapat diterapkan secara parsial)
  • Hasil perhitungan yang ada berpotensi berubah secara drastis
  • Sebaiknya jangan digunakan dalam dokumen perhitungan biaya yang dibagikan kepada tim

Jujur saja, pada kenyataannya, opsi ini tidak akan digunakan, dan,Lebih aman jika dikendalikan satu per satu menggunakan fungsi ROUNDPilihan ini lebih direkomendasikan.

Hal yang sama juga berlaku di luar Excel | Batasan standar IEEE 754

Kesalahan bilangan pecahan mengambang IEEE 754 adalah,Ini bukanlah masalah khusus Excel, melainkan terjadi pada semua perangkat lunak spreadsheet utama seperti Google Spreadsheet, Numbers, dan OpenOfficeakan dilakukan.

Selain itu, spesifikasi yang sama juga berlaku untuk sebagian besar bahasa pemrograman, seperti C, Python, JavaScript, dan SQL.

IEEE 754 merupakan spesifikasi umum yang digunakan di semua aplikasi spreadsheet dan bahasa pemrograman kecuali Excel | Kesalahan perhitungannya berlaku secara universal di seluruh dunia

Dengan kata lain,Bukan karena “Excel jadi tidak akurat”, melainkan karena spesifikasi yang berlaku secara global. Sebagai seorang insinyur sipil, Anda harus memahami hal tersebut, dan menggunakan fungsi ROUND adalah jawaban yang tepat.

5 Hal Penting yang Harus Diperhatikan

Saat menggunakan Excel untuk menghitung luas, jumlah, dan sejenisnya, harap perhatikan 5 hal berikut ini.

  • Perhitungan jumlah selalu =ROUND(…,0) lalu dibulatkan ke satuan yen
  • Perhitungan jumlah adalah =ROUND(…,2) dengan dua digit desimal tetap
  • Pembulatan dalam format tampilan tidak mengubah nilai internalmenyadari hal tersebut
  • =A1=0,3 Hindari perbandingan langsung seperti itu(Jebakan Penilaian FALSE)
  • Jangan gunakan “Opsi Akurasi” dalam dokumen perhitungan biaya yang digunakan oleh tim

Jika Anda ragu, pertimbangkan dulu apakah perlu menyisipkan fungsi ROUND satu tingkat atau tidak.

Hanya dengan menyisipkan 1 ROUND, penyimpangan yang disebabkan oleh IEEE 754 akan hilang sebesar 99%.

Bukan karena Excel memiliki “kebiasaan”, melainkan,Karakteristik Operasi Bilangan Pecahan Mengambang di Seluruh Duniaagar kita dapat memahaminya dan menggunakannya dengan baik.

 

Sampai jumpa lagi.

Meskipun sering dipertanyakan mengenai perlunya toleransi penempatan dalam proses pengecoran, jawabannya selalu sama!

Tinggalkan komentar

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses