Pembatasan overflow, dalam floating-point, x + x + x
adalah persis angka floating-point yang dibulatkan dengan benar (yaitu terdekat) dengan 3 * yang sebenarnya x
, x + x + x + x
tepat 4 * x
, dan x + x + x + x + x
sekali lagi merupakan perkiraan titik mengambang yang dibulatkan dengan benar untuk 5 * x
.
Hasil pertama, karena x + x + x
, berasal dari fakta yang x + x
tepat. x + x + x
dengan demikian hasil dari hanya satu pembulatan.
Hasil kedua lebih sulit, satu demonstrasi itu dibahas di sini (dan Stephen Canon menyinggung bukti lain dengan analisis kasus pada 3 digit terakhir x
). Untuk meringkas, 3 * x
berada di binade yang sama dengan 2 * x
atau di binade yang sama dengan 4 * x
, dan dalam setiap kasus adalah mungkin untuk menyimpulkan bahwa kesalahan pada penambahan ketiga membatalkan kesalahan pada penambahan kedua ( Tambahan pertama adalah tepat, seperti yang sudah kami katakan).
Hasil ketiga, " x + x + x + x + x
dibulatkan dengan benar", berasal dari yang kedua dengan cara yang sama dengan yang pertama berasal dari ketepatan x + x
.
Hasil kedua menjelaskan mengapa 0.1 + 0.1 + 0.1 + 0.1
persis angka floating-point 0.4
: bilangan rasional 1/10 dan 4/10 dapat didekati dengan cara yang sama, dengan kesalahan relatif yang sama, ketika dikonversi ke floating-point. Angka floating-point ini memiliki rasio tepat 4 di antara mereka. Hasil pertama dan ketiga menunjukkan bahwa 0.1 + 0.1 + 0.1
dan 0.1 + 0.1 + 0.1 + 0.1 + 0.1
dapat diperkirakan memiliki lebih sedikit kesalahan daripada yang dapat disimpulkan dengan analisis kesalahan naif, tetapi, dalam diri mereka sendiri, mereka hanya mengaitkan hasilnya dengan masing 3 * 0.1
- masing dan 5 * 0.1
, yang dapat diharapkan dekat tetapi tidak selalu identik dengan 0.3
dan 0.5
.
Jika Anda terus menambahkan 0.1
setelah penambahan keempat, Anda akhirnya akan mengamati kesalahan pembulatan yang membuat " 0.1
ditambahkan ke dirinya sendiri n kali" menyimpang dari n * 0.1
, dan bahkan menyimpang lebih dari n / 10. Jika Anda memplot nilai "0,1 ditambahkan ke dirinya sendiri n kali" sebagai fungsi dari n, Anda akan mengamati garis kemiringan konstan oleh binades (segera setelah hasil penambahan n ditakdirkan untuk jatuh ke dalam binade tertentu, sifat-sifat tambahan dapat diharapkan mirip dengan penambahan sebelumnya yang menghasilkan hasil dalam binade yang sama). Di dalam binade yang sama, kesalahan akan tumbuh atau menyusut. Jika Anda melihat urutan lereng dari binade ke binade, Anda akan mengenali angka berulang dari0.1
dalam biner untuk sementara waktu. Setelah itu, penyerapan akan mulai terjadi dan kurva akan mendatar.