C # عشري إلى الرقمي (؟،؟)
سؤال
ولدي مشكلة، أنا لم تجد بعد الحل لذلك أنا أطلب مساعدتكم. في قاعدة البيانات الخاصة بي ولدي بعض كثافة العمليات، عشري والسلسلة التي يجب أن يكون تحويل في رقمية مع طول ودقة محددة لتضمينها في ملف ثابت.
مثال:
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));
نصائح أخرى
تحقق من String.Format
:
لا تنتمي إلى StackOverflow