كيفية تحويل مزدوج إلى سلسلة دون القدرة على 10 تمثيل (E-05)
سؤال
كيفية تحويل مزدوج إلى سلسلة دون القدرة على 10 تمثيل (E-05)
double value = 0.000099999999833333343;
string text = value.ToString();
Console.WriteLine(text); // 9,99999998333333E-05
أريد نص ليكون 0.0000999999998333333343 (أو ما يقرب من ذلك، أنا لا أفعل علوم الصواريخ :)
لقد جربت المتغيرات التالية
Console.WriteLine(value.ToString()); // 9,99999998333333E-05
Console.WriteLine(value.ToString("R20")); // 9,9999999833333343E-05
Console.WriteLine(value.ToString("N20")); // 0,00009999999983333330
Console.WriteLine(String.Format("{0:F20}", value)); // 0,00009999999983333330
يبدو أن القيام Tostring N20 أو Format F20 الأقرب إلى ما أريد، لكنني في نهاية المطاف مع الكثير من الأصفار الزائدة، هل هناك طريقة ذكية لتجنب ذلك؟ أود الحصول على قريب من التمثيل المزدوج قدر الإمكان 0.000099999999833333343
المحلول
يستخدم string.format () مع ال تنسيق محدد. وبعد أعتقد أنك تريد {0: F20} أو نحو ذلك.
string formatted = String.Format("{0:F20}", value);
نصائح أخرى
لا تحتاج string.Format()
. وبعد فقط ضع الحق شكل سلسلة في القائمة .ToString()
طريقة. شيء مثل "n" يجب القيام به.
ماذا عن
Convert.ToDecimal(doubleValue).ToString()
يستخدم string.Format
مع محدد تنسيق مناسب.
هذا المدونة وظيفة لديه الكثير من الأمثلة: http:/blogs.msdn.com/kathykam/archive/2006/03/29/564426.aspx.