Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memformat Berganda dengan Tepat dalam C# untuk Memadankan Ketepatan Yang Ditentukan?
Dalam C#, kelakuan lalai untuk memformat beregu ialah untuk membundarkan nilai kepada 15 digit perpuluhan bererti sebelum menggunakan ketepatan yang ditentukan. Ini boleh membawa kepada hasil yang tidak dijangka, terutamanya apabila berurusan dengan nilai yang mempunyai perbezaan kecil dalam ketepatan.
Untuk memformat penggandaan dengan tepat dan memastikan ketepatan yang diminta dihormati, seseorang boleh menggunakan kelas DoubleConverter yang disediakan oleh Jon Skeet. Kaedah ToExactString() dalam kelas ini mengembalikan nilai perpuluhan tepat bagi dua kali ganda. Untuk memasukkan pembundaran kepada ketepatan yang ditentukan, kaedah boleh diubah suai seperti berikut:
public static string ToRoundedExactString(double value, int precision) { string exactString = ToExactString(value); int decimalIndex = exactString.IndexOf('.'); if (decimalIndex == -1) { return exactString; } int decimalCount = exactString.Length - (decimalIndex + 1); if (decimalCount > precision) { exactString = exactString.Substring(0, decimalIndex + 1 + precision); double roundedValue = Double.Parse(exactString); return roundedValue.ToString(); } else { return exactString; } }
Menggunakan kaedah yang diubah suai ini, kod berikut akan menghasilkan output yang sepadan dengan ketepatan yang dinyatakan dalam penentu format:
double i = 10 * 0.69; Console.WriteLine(DoubleConverter.ToRoundedExactString(i, 20)); Console.WriteLine(DoubleConverter.ToRoundedExactString(6.9 - i, 20)); Console.WriteLine(DoubleConverter.ToRoundedExactString(6.9, 20)); // 6.89999999999999946709 // 0.00000000000000088818 // 6.90000000000000035527
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memformat Berganda dengan Tepat dalam C# untuk Memadankan Ketepatan Yang Ditentukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!