2012-01-12 79 views
3

我试图格式化带有小数在没有昏迷或指向自定义格式的十进制值,其检查http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx,但无法找到我需要自定义格式C#

格式我需要转换为十进制值例如3.1416至314或甚至更好0000000314,任何线索?

+0

你试过,你链接的一个的姐页,[自定义数字格式字符串(http://msdn.microsoft .COM/EN-US /库/ 0c899ak8.aspx)? – 2012-01-12 17:01:46

+0

我怀疑你将能够摆脱格式字符串的小数点分隔符。我怀疑你需要使用乘法。 – phoog 2012-01-12 17:06:08

+0

应该发生什么事情只需剥离你不想要的小数位,或者应该通过某种方式舍弃其余部分? – 2012-01-12 17:08:28

回答

4

要通过100扩展并显示多达9个前导零使用

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

对于刚刚显示

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

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

这些ValueConverters是高效的,倘若你写一个特定的转换(照顾凝聚力高的),他们都非常方便,可重复使用的一个转换器

你需要什么的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净。

希望这有助于:)

1

做一个简单的方法

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

该方法有点遗漏。它所做的不是得到数字“没有逗号”,而是具有两个第一个小数位的数字(即FormatNumberMultipliedByTen或someting ;-) – 2012-01-12 17:32:46

+0

我用这个例子作为例子,我应该将它命名为不带小数或某物..但我相信OP得到的主旨..感谢输入:) – MethodMan 2012-01-12 17:35:39