سؤال

لدي تحويل مزدوج إلى 10 أرقام + 4 عشرية.

لذلك دعونا نقول: لدي 999،56 مزدوجة. يجب أن أحصل على 00000009995600 -> دون فاصلة!

ما لدي هو:

string.format ("{0: 000000000000.0000}"، القيمة) ولكن ما أحصل عليه هو: 0000000999،5600

إذن ما يمكنني فعله الآن هو البحث عن الفاصلة وحذفها، لكن أود أن أعرف ما إذا كانت هناك طريقة أخرى "نظيفة" للتنسيق في هذا التنسيق المحدد؟

شكرا!

هل كانت مفيدة؟

المحلول

منذ قلت أنك تريد تجنب String.Replace:

// avoid whacked out cultures
double value = 999.56m;
CultureInfo info = CultureInfo.GetCultureInfo("en-US");
string s = (10000 * value).ToString("00000000000000", info));
Console.WriteLine(s); // displays "00000009995600"

ولكن حقا، لا يوجد شيء خاطئ في ذلك:

double value = 999.56m;
CultureInfo info = CultureInfo.GetCultureInfo("en-US");
string s = value.ToString("0000000000.0000", info).Replace(
    info.NumberFormat.NumberDecimalSeparator,
    String.Empty)
Console.WriteLine(s); // displays "00000009995600"

نصائح أخرى

string.Format("{0:00000000000000}", value * 10000)

حسنا، سأستخدم طريقة استبدال () لأنني أعتقد أنه لا توجد طريقة "بسيطة" أخرى:

هنا هو الحل الذي هو نفسه تقريبا جواب جيسون:

string sep = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
Console.WriteLine(String.Format(fromt, testvalue).Replace(sep, ""));

شكرا!

double val = 12345.6789;
return val.ToString().Split('.')[0];

إذا كنت لا ترغب في (أو لا تستطيع) اضرب ثم قد يعمل هذا:

string newValue = value.Replace(",", "");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top