Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membandingkan Nilai Perpuluhan dengan Tepat dalam C# Apabila Menggunakan Nombor Titik Terapung?

Bagaimanakah Saya Boleh Membandingkan Nilai Perpuluhan dengan Tepat dalam C# Apabila Menggunakan Nombor Titik Terapung?

Barbara Streisand
Lepaskan: 2025-01-22 20:57:13
asal
289 orang telah melayarinya

How Can I Accurately Compare Decimal Values in C# When Using Floating-Point Numbers?

Perbandingan nombor titik terapung berketepatan ganda dalam C#: Isu ketepatan dan ketepatan

Apabila menggunakan pembolehubah titik terapung berketepatan dua dalam C#, pembangun sering menemui hasil yang tidak dijangka dalam perbandingan yang melibatkan nilai perpuluhan. Satu masalah sedemikian timbul daripada sifat asas perwakilan titik terapung.

Masalah titik terapung

Jenis data

dalam C# menggunakan pecahan binari dan bukannya pecahan perpuluhan untuk menyimpan nilai titik terapung. Perwakilan ini mempunyai hadnya, dan beberapa nilai perpuluhan tidak boleh disimpan dengan tepat. Sebagai contoh, nombor 0.1 tidak boleh diwakili tepat sebagai pecahan binari. Ia disimpan sebagai anggaran, menghasilkan nilai yang sedikit berbeza. double

Penyelesaian: Jenis perpuluhan

Untuk mengatasi kekurangan ketepatan ini, pertimbangkan untuk menggunakan

jenis data dan bukannya decimal. double Simpan nombor menggunakan tatatanda perpuluhan, membenarkan nilai seperti 0.1 diwakili dengan tepat. Ini menghapuskan masalah yang dihadapi semasa membandingkan nilai decimal. double

Penjelasan terperinci

Nombor titik terapung diwakili menggunakan eksponen dan mantissa, serupa dengan tatatanda saintifik. Walau bagaimanapun, daripada menggunakan asas 10, ia menggunakan asas 2 (notasi binari).

Nilai perpuluhan seperti 0.1 mempunyai perwakilan binari tidak berulang dan oleh itu sukar untuk disimpan dengan tepat dalam sistem asas 2. Akibatnya, anggaran binari 0.1 yang disimpan dalam pembolehubah

mungkin berbeza sedikit daripada nilai sebenar. double

Perbezaan halus ini boleh membawa kepada perbandingan yang tidak konsisten dalam

penyata, di mana nilai jangkaan 0.1 mungkin tidak sepadan dengan nilai yang disimpan. Menggunakan jenis data if mengelakkan masalah ini dengan memastikan storan dan perbandingan nilai perpuluhan yang tepat. decimal

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Nilai Perpuluhan dengan Tepat dalam C# Apabila Menggunakan Nombor Titik Terapung?. 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