代码之家  ›  专栏  ›  技术社区  ›  Polo

C#十进制到数字(?,)

  •  3
  • Polo  · 技术社区  · 17 年前

    我有一个问题,我还没有找到解决方案,所以我请求你的帮助。 在我的数据库中,我有一些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
    

    , )

    2 回复  |  直到 17 年前
        1
  •  4
  •   Josip Medved    17 年前

    试试这个:

    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));
    
        2
  •  3
  •   Amber    17 年前
    推荐文章