كيفية تحويل مزدوج إلى سلسلة دون القدرة على 10 تمثيل (E-05)

StackOverflow https://stackoverflow.com/questions/1319191

  •  19-09-2019
  •  | 
  •  

سؤال

كيفية تحويل مزدوج إلى سلسلة دون القدرة على 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top