Dalam implementasi floating point tipikal, hasil dari satu operasi dihasilkan seolah-olah operasi dilakukan dengan ketepatan tak terbatas, dan kemudian dibulatkan ke angka floating-point terdekat.
Bandingkan dan b + a : Hasil setiap operasi yang dilakukan dengan ketepatan tak terbatas adalah sama, oleh karena itu hasil ketepatan tak terhingga identik ini dibulatkan dengan cara yang sama. Dengan kata lain, penambahan floating-point bersifat komutatif.a + bb + a
Ambil : b adalah angka floating-point. Dengan angka floating point biner , 2 b juga merupakan angka floating-point (eksponen lebih besar satu), jadi b + b ditambahkan tanpa kesalahan pembulatan. Kemudian sebuah ditambahkan ke tepat nilai b + b . Hasilnya adalah tepat nilai 2 b + a , dibulatkan ke terdekat angka floating-point.b + b + ab2 bb + bSebuahb + b2 b + a
Ambil : a + b ditambahkan, dan akan ada kesalahan pembulatan r , sehingga kami mendapatkan hasil yang + b + r . Menambahkan b , dan hasilnya adalah tepat nilai 2 b + a + r , dibulatkan ke terdekat angka floating-point.a + b + ba + bra + b + rb2 b + a + r
Jadi dalam satu kasus, , bulat. Dalam kasus lain, 2 b + a + r , bulat.2 b + a2 b + a + r
PS. Apakah untuk dua angka tertentu dan b kedua perhitungan memberikan hasil yang sama atau tidak tergantung pada angka, dan pada kesalahan pembulatan dalam perhitungan a + b , dan biasanya sulit diprediksi. Menggunakan presisi tunggal atau ganda tidak membuat perbedaan pada masalah pada prinsipnya, tetapi karena kesalahan pembulatan berbeda, akan ada nilai-nilai a dan b di mana dalam presisi tunggal hasilnya sama dan dalam presisi ganda tidak, atau sebaliknya. Presisi akan jauh lebih tinggi, tetapi masalah bahwa dua ekspresi secara matematis sama tetapi tidak sama dalam aritmatika floating-point tetap sama.Sebuahba + b
PPS. Dalam beberapa bahasa, aritmatika titik apung dapat dilakukan dengan presisi lebih tinggi atau rentang angka yang lebih tinggi daripada yang diberikan oleh pernyataan aktual. Dalam hal ini, akan jauh lebih mungkin (tetapi masih tidak dijamin) bahwa kedua jumlah memberikan hasil yang sama.
PPPS. Sebuah komentar bertanya apakah kita harus bertanya apakah angka floating point sama atau tidak sama sekali. Tentu saja jika Anda tahu apa yang Anda lakukan. Misalnya, jika Anda mengurutkan array, atau mengimplementasikan set, Anda mendapatkan masalah besar jika Anda ingin menggunakan beberapa gagasan "kira-kira sama". Dalam antarmuka pengguna grafis, Anda mungkin perlu menghitung ulang ukuran objek jika ukuran objek telah berubah - Anda membandingkan oldSize == newSize untuk menghindari perhitungan ulang itu, mengetahui bahwa dalam praktiknya Anda hampir tidak pernah memiliki ukuran yang hampir sama, dan program Anda benar bahkan jika ada perhitungan ulang yang tidak perlu.