2013-03-16 67 views
1
decimal value = 10; 
int decimalPosition= 3; //this decimalPosition will be dynamically change. 
decimal formatted = Math.Round(value, decimalPosition); 

if decimalPosition = 3; 我需要显示格式化值,如:10.000。如何根据我的小数点位置值显示小数位?

if decimalPosition = 5; 我需要显示格式化值,如:10.00000。

注意:我必须使用Round函数。

+0

为什么必须用'Round'? – MarcinJuraszek 2013-03-16 12:32:29

回答

0

使用FORMATASNUMBER(价值,decimalPosition),而不是math.round的

对不起,我忘了这是C#不VB 但是你可以在MSDN这里读到它

http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.strings.formatnumber(v=VS.80).aspx

命令是String.FormatNumber(等于等于等于)

和ACTUAL声明是...

public static string FormatNumber (
    Object Expression, 
    [OptionalAttribute] int NumDigitsAfterDecimal, 
    [OptionalAttribute] TriState IncludeLeadingDigit, 
    [OptionalAttribute] TriState UseParensForNegativeNumbers, 
    [OptionalAttribute] TriState GroupDigits 
) 
+0

C#中没有这种东西# – MarcinJuraszek 2013-03-16 12:33:49

+0

单击上面示例中的链接,查看c#示例。证据是存在的,它的c# – Zeddy 2013-03-16 14:18:30

+0

是的,有'Strings.FormatNumber'方法,但没有一个叫'FORMATASNUMBER',我声称。 – MarcinJuraszek 2013-03-16 14:19:42

1

你可以尝试这样的事情: -

decimal.Round(yourValue, decimalPosition, MidpointRounding.AwayFromZero); 
2

decimal值没有指定格式 - 它只是一个数值。你可以指定它是被打印出来的格式,但你必须这样做,在打印或正在创建的字符串时:

decimal value = 10; 
int decimalPosition = 3; //this decimalPosition will be dynamically change. 
decimal formatted = Math.Round(value, decimalPosition); 

string format = string.Format("{{0:0.{0}}}", string.Concat(Enumerable.Repeat("0", decimalPosition).ToArray())); 
string formattedString = string.Format(format, formatted); 

Console.WriteLine(formattedString); 

打印10.000到控制台。

指定这样的格式的另一种方法:

var format = string.Format("{{0:f{0}}}", decimalPosition); 
+0

这里硬编码“0”值(Enumerable.Repeat(“0”,decimalPosition)) – Kavitha 2013-03-16 12:45:16

+0

不,这只是一个模式。 – MarcinJuraszek 2013-03-16 12:45:33

+0

不用硬编码可以吗? – Kavitha 2013-03-16 12:45:48

0

ü可以尝试: -

decimal value = 10; 
     int decimalPosition = 3; //this decimalPosition will be dynamically change. 
     string position = ""; 

     for (int i = 0; i < decimalPosition; i++) 
     { 
      position += "0"; 
     } 
     string newValue = value.ToString() + "." + position; 
     decimal formatted = Convert.ToDecimal(newValue); 
+0

@Neeru Bindela你不需要使用任何额外的功能 – 2013-03-16 12:56:29

+0

感谢您的帮助。但格式化的值是10.Not 10.000 – Kavitha 2013-03-16 13:28:42

+0

@Neeru Bindela Response.Write(formatted.ToString());它是给你想要的结果相同 – 2013-03-16 13:35:18