Ikhtisar:
Menukar terus nombor titik terapung berketepatan dua kepada rentetan dalam .NET kadangkala boleh menghasilkan tatatanda saintifik. Ini tidak diingini dalam situasi yang memerlukan perwakilan perpuluhan yang tepat. Artikel ini membentangkan kaedah mudah untuk mencapai ini tanpa menggunakan manipulasi rentetan yang kompleks atau ungkapan biasa.
Penyelesaian:
Inti penyelesaian terletak pada memanfaatkan kaedah ToString()
dengan rentetan format yang direka dengan teliti:
<code class="language-csharp">doubleValue.ToString("0." + new string('#', 339))</code>
Penjelasan:
"0."
: Bahagian ini memastikan bahagian integer nombor sentiasa diwakili dengan sekurang-kurangnya sifar, walaupun sifar.new string('#', 339)
: Ini menjana rentetan yang mengandungi 339 aksara '#' secara dinamik. Aksara '#' dalam rentetan format bertindak sebagai pemegang tempat untuk digit, hanya memaparkannya jika ia penting. 339 dipilih untuk menampung ketepatan perpuluhan maksimum yang mungkin untuk gandaan, menghalang tatatanda saintifik.Pendekatan ini mengendalikan semua nilai berganda yang sah tanpa kehilangan ketepatan, tidak seperti kaedah lebih mudah yang mungkin memotong digit. Pemformatan dilakukan dengan cekap dalam rangka kerja .NET, yang membawa kepada prestasi unggul berbanding manipulasi rentetan manual.
Kod Dioptimumkan:
Untuk kebolehbacaan dan prestasi yang lebih baik, tentukan pemalar:
<code class="language-csharp">public static class FormatStrings { public const string DoubleFixedPoint = "0.###################################################################################################################################################################################################################################################################################################################################################"; }</code>
Kemudian, gunakannya seperti ini:
<code class="language-csharp">doubleValue.ToString(FormatStrings.DoubleFixedPoint);</code>
Pertimbangan Penting:
Walaupun teknik ini berkesan menghalang notasi saintifik, adalah penting untuk memahami bahawa teknik ini tidak menjamin perjalanan pergi balik. Menukar rentetan yang terhasil kembali kepada dua kali mungkin tidak menghasilkan nilai asal yang tepat disebabkan oleh batasan yang wujud bagi perwakilan titik terapung. Untuk situasi yang memerlukan perjalanan pergi balik yang sempurna, teroka pilihan pemformatan tersuai atau jenis data alternatif.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Double kepada Rentetan dalam .NET Tanpa Notasi Saintifik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!