Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengeluarkan Nilai Perpuluhan Tepat Double dalam C#?

Bagaimanakah Saya Boleh Mengeluarkan Nilai Perpuluhan Tepat Double dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-05 16:57:41
asal
170 orang telah melayarinya

How Can I Accurately Output the Exact Decimal Value of a Double in C#?

Memformat Berganda dalam C#

Apabila mengeluarkan dua kali ganda, C# secara automatik membundarkannya kepada 15 digit bererti sebelum menggunakan sebarang pemformatan. Ini boleh membawa kepada percanggahan antara output berformat dan nilai sebenar dua kali ganda.

Masalah dengan String.Format:

Kaedah String.Format dalam C# hanya mempengaruhi paparan nombor yang diformatkan. Ia tidak melaraskan ketepatan nilai berganda asas. Akibatnya, String.Format("{0:F20}", i) akan memaparkan 20 tempat perpuluhan, tetapi nilai sebenar dua kali ganda mungkin masih telah dibundarkan kepada 15 tempat perpuluhan secara dalaman.

Contoh:

Pertimbangkan kod berikut:

double i = 10 * 0.69;
Console.WriteLine(String.Format("  {0:F20}", i));
Salin selepas log masuk

Output akan 6.9000000000000000000 , walaupun nilai sebenar i lebih hampir kepada 6.89999999999999946709.

Penyelesaian:

Untuk keluaran berganda, anda boleh menggunakan nilai perpuluhan dua kali ganda S. Kelas DoubleConverter. Kelas ini mempunyai kaedah ToExactString yang mengembalikan perwakilan perpuluhan tepat bagi dua kali ganda. Anda kemudiannya boleh memformatkan rentetan seperti yang diperlukan.

Contohnya:

double i = 10 * 0.69;
Console.WriteLine(DoubleConverter.ToExactString(i));
Salin selepas log masuk
Ini akan mengeluarkan 6.89999999999999946709294817992486059665679931640625 , iaitu perpuluhan yang tepat

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Nilai Perpuluhan Tepat Double 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan