Rumah > pembangunan bahagian belakang > C++ > Mengapa 10 * 0.69 tidak betul-betul 6.9 dalam C#?

Mengapa 10 * 0.69 tidak betul-betul 6.9 dalam C#?

DDD
Lepaskan: 2025-01-10 08:48:41
asal
835 orang telah melayarinya

Why is 10 * 0.69 not exactly 6.9 in C#?

Isu Ketepatan Titik Terapung dalam Pendaraban C#

Mari kita periksa coretan kod C#:

<code class="language-csharp">double i = 10 * 0.69;</code>
Salin selepas log masuk

Walaupun anda menjangkakan i sama dengan 6.9, output sebenar selalunya 6.8999999999999995. Percanggahan ini timbul daripada had sedia ada aritmetik titik terapung dalam rangka kerja .NET.

Nombor titik terapung, tidak seperti nombor perpuluhan, diwakili menggunakan format binari. Perwakilan binari ini bermakna bahawa nilai perpuluhan tertentu, termasuk yang mempunyai bahagian perpuluhan berulang tanpa terhingga seperti 0.69, tidak boleh dinyatakan dengan sempurna. Sebaliknya, ia adalah anggaran.

Pengkompil, menyedari had ini, kerap mengoptimumkan pengiraan dengan menyimpan anggaran hampir 6.9 secara langsung, dan bukannya mengira 10 * 0.69 pada masa jalan. Anggaran ini menyumbang kepada perbezaan kecil yang diperhatikan.

Untuk mencapai ketepatan yang lebih tinggi, terutamanya dalam aplikasi kewangan, pertimbangkan untuk menggunakan decimal jenis data. decimal menggunakan perwakilan asas-10, memberikan perwakilan nombor perpuluhan yang lebih tepat seperti 0.69, sekali gus meminimumkan ralat pembundaran yang dikaitkan dengan aritmetik titik terapung binari.

Atas ialah kandungan terperinci Mengapa 10 * 0.69 tidak betul-betul 6.9 dalam C#?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan