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

カンマやドットは入れられません。簡単な解決策はありますか?私は多くのことを試しましたが、フラットファイルにファイルされたループを実行する以外に結果が得られません!!

編集:

フラットファイルは、開始点と長さに基づいて情報を取得するため、ファイルに含めるすべてのデータは特定の長さである必要があります。そして、私が例として持っている数値については

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

N( 、)に基づいて10進数または整数のデータを解析する方法を知りたいと思いました

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 に答える