سؤال

ولدي مشكلة، أنا لم تجد بعد الحل لذلك أنا أطلب مساعدتكم. في قاعدة البيانات الخاصة بي ولدي بعض كثافة العمليات، عشري والسلسلة التي يجب أن يكون تحويل في رقمية مع طول ودقة محددة لتضمينها في ملف ثابت.

مثال:

integer 123 to numeric(8,0) ==> 00000123
decimal 123,123 to numeric(8,8) ==> 0000012312300000
String "22" to numeric(8,0) ==> 00000022

لا يمكن وضع فاصلة أو نقطة. هل هناك حل سهل أحاول الكثير من الامور ولكن لا شيء سوف تعطيني نتيجتي إلا القيام حلقات foreach قدم في ملفي شقة قذرة جدا !!

وتحرير:

وملف ثابت يحصل على المعلومات استنادا إلى هناك نقطة البدء وطول لذلك كل البيانات ط امب في ملف يجب أن يكون طول cetain. وللالرقمية لدي لexemple

   database Decimal Price = 123,456
   File     Numeric(8,6) Price = 00000123456000

وأردت أن أعرف كيف يمكن أن تحليل أي بيانات عشري أو عدد صحيح على أساس N (<م>، )

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

المحلول

وجرب هذا:

string ToNumericString(int value) {
    return value.ToString("00000000");
}

string ToNumericString(decimal value) {
    var value16 = Math.Truncate(value * 100000000);
    return value16.ToString("0000000000000000");
}

string ToNumericString(string value) {
    return ToNumericString(int.Parse(value, CultureInfo.InvariantCulture));
}

لنسميها:

    MessageBox.Show(ToNumericString(123));
    MessageBox.Show(ToNumericString(123.123M));
    MessageBox.Show(ToNumericString("22"));

وأو أكثر عمومية:

string ToNumericString(decimal value, int digitsBefore, int digitsAfter) {
    var value16 = Math.Truncate(value * (decimal)Math.Pow(10,digitsAfter));
    return value16.ToString(new String('0', digitsBefore + digitsAfter));
}

MessageBox.Show(ToNumericString(123.123M, 8, 3));

نصائح أخرى

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