3

我有一个问题,我还没有找到解决方案,所以我请求你的帮助。在我的数据库中,我有一些 int、decimal 和 string 需要以特定长度和精度的数字转换以包含在平面文件中。

前任:

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

它不能放逗号或点。有没有一个简单的解决方案我尝试了很多东西,但没有一个会给我我的结果,除了做循环 foreach 在我的平面文件中归档太脏!

编辑:

平面文件根据起点和长度获取信息,因此我包含在文件中的每个数据都必须是一定长度。以我为例的数字

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

我想知道如何根据 N( , )解析任何十进制或整数数据

4

2 回答 2

4

试试这个:

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));
于 2009-08-03T09:55:45.583 回答
3

签出String.Format

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

于 2009-08-03T09:44:54.580 回答