Rumah >pembangunan bahagian belakang >C++ >Mengapakah Pemformatan Berganda C# dan Nilai Penyahpepijat Berbeza?

Mengapakah Pemformatan Berganda C# dan Nilai Penyahpepijat Berbeza?

Susan Sarandon
Susan Sarandonasal
2025-01-04 22:03:45259semak imbas

Why Do C# Double Formatting and Debugger Values Differ?

Apa Yang Berlaku Apabila Memformat Berganda dalam C

Apabila memformat berganda untuk output dalam C#, adalah penting untuk ambil perhatian bahawa output berbeza daripada nilai yang dipaparkan dalam penyahpepijat. Inilah sebabnya:

Isu Asas

Tidak seperti C, di mana ketepatan output ditentukan oleh penentu format, C# membundarkan semua dua kali ganda kepada 15 digit perpuluhan bererti sebelum menggunakan sebarang pemformatan. Percanggahan ini timbul kerana C# mengutamakan ketepatan berbanding ketepatan yang diminta.

Gelagat Penyahpepijat Visual Studio

Penyahpepijat Visual Studio secara langsung memaparkan perwakilan binari dalaman bagi beregu, oleh itu percanggahan dengan output yang diformatkan.

Penyelesaian: Tersuai Memformat

Walaupun C# tidak mempunyai penyelesaian terbina dalam untuk pemformatan perpuluhan tepat, anda boleh membina perwakilan rentetan secara manual daripada data binari dalaman. Sebagai alternatif, anda boleh menggunakan perpustakaan pihak ketiga seperti DoubleConverter daripada Jon Skeet, yang menyediakan kaedah ToExactString untuk output perpuluhan yang tepat.

Contoh

Menggunakan DoubleConverter untuk memformat dua hingga 20 tempat perpuluhan:

double i = 10 * 0.69;
Console.WriteLine(DoubleConverter.ToExactString(i));

Atas ialah kandungan terperinci Mengapakah Pemformatan Berganda C# dan Nilai Penyahpepijat Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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