十进制c#的自定义格式

本文关键字:格式 自定义 十进制 | 更新日期: 2023-09-27 18:20:04

我正在尝试将带有小数的十进制值格式化为没有逗号或点的自定义格式http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx但找不到我需要的格式

我需要将十进制值(例如3.1416)转换为314,甚至更好的是0000000314,有线索吗?

十进制c#的自定义格式

要按100缩放并显示多达9个前导零,请使用

String.Format("{0:0000000000}", (value * 100));

仅显示

String.Format("{0:##########}", (value * 100))

制作一个简单的方法

   public static string FormatNumberMultipliedByOneHundred(string inputString)
   {
       inputString = string.Format("{0:########}", (inputString * 100));
       return inputString;
   }

我想解决这个问题的最佳方法是使用ValueConverters。通过几个简单的步骤,您可以编写一个ValueConverter,它以任意对象作为输入,应用一些转换并输出结果。

这些ValueConverter非常高效,如果你为一个特定的转换编写一个转换器(注意高内聚性),它们非常方便,并且可以重复使用

您需要的是IValueConverter interafce,它必须在Converter类中实现。转换总是将一些A转换为一些B。因此,接口正好包含两种方法,分别负责向一个方向转换和向回(相反方向)转换

编写一个所有转换器都可以继承的通用基类是一种很好的做法:

public class ValueConverterBase : IValueConverter {
public virtual object Convert (object value, Type convertTargetType, object convertParameter, System.Globalization.CultureInfo convertCulture) {
        return value;
    }
    public virtual object ConvertBack (object value, Type convertBackTargetType, object convertBackParameter, System.Globalization.CultureInfo convertBackCulture) {
        return value;
    }
}

然后,您可以编写实际实现转换代码的转换器类:

public class NumberConverter : ValueConverterBase {
    public override object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
        // code for converting
    }
    public override object ConvertBack (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
        // code for converting back
    }
}

您可以在互联网上找到大量关于ValueConverter的文档和教程。

希望这有帮助:)