Rumah > pembangunan bahagian belakang > C++ > Mengapa Penambahan Titik Terapung Menghasilkan Keputusan Berbeza Bergantung pada Susunan Operasi?

Mengapa Penambahan Titik Terapung Menghasilkan Keputusan Berbeza Bergantung pada Susunan Operasi?

Barbara Streisand
Lepaskan: 2024-12-29 06:17:15
asal
586 orang telah melayarinya

Why Does Floating-Point Addition Produce Different Results Depending on the Order of Operations?

Kaitan dalam Aritmetik Titik Terapung

Aritmetik titik terapung digunakan untuk mewakili nombor nyata dalam pengkomputeran. Disebabkan ralat pembundaran dalaman, perkaitan operasi titik terapung boleh dipersoalkan.

Masalah:

Pertimbangkan kod berikut yang menambah tiga nombor titik terapung dan membandingkan jumlah mereka kepada 1:

cout << ((0.7 + 0.2 + 0.1) == 1) << endl;     //output is 0
cout << ((0.7 + 0.1 + 0.2) == 1) << endl;     //output is 1
Salin selepas log masuk

Mengapa ungkapan ini menghasilkan berbeza keputusan?

Jawapan:

Tambahan titik terapung tidak dijamin bersekutu. Menukar susunan nombor yang ditambah boleh mengubah keputusan kerana ralat pembundaran.

Menurut kertas kerja "Apa Yang Setiap Saintis Komputer Patut Tahu tentang Aritmetik Titik Terapung," malah kurungan dalam ungkapan boleh memberi kesan kepada keputusan . Sebagai contoh, ungkapan berikut menghasilkan nilai yang berbeza:

(x+y)+z
x+(y+z)
Salin selepas log masuk

di mana x = 1e30, y = -1e30 dan z = 1. Ungkapan pertama menilai kepada 1, manakala ungkapan kedua menilai kepada 0.

Atas ialah kandungan terperinci Mengapa Penambahan Titik Terapung Menghasilkan Keputusan Berbeza Bergantung pada Susunan Operasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan