[英]custom format for decimal c#
我正在嘗試將帶小數的十進制值格式化為沒有逗號或點的自定義格式,檢查http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx但找不到我需要的格式
我需要將例如3.1416的十進制值轉換為314甚至更好的0000000314,任何線索?
要縮放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,它接受任意對象作為輸入應用一些轉換並輸出結果。
這些ValueConverters非常高效,如果您為一次特定的轉換編寫一個轉換器(注意高內聚),它們非常方便且可重復使用
你需要的是你必須在Converter類中實現的IValueConverter交互。 轉換總是將一些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的大量文檔和教程。
希望這可以幫助 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.