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

如果小数位置 =3;我需要显示格式化值,例如:10.000。

如果小数位置 =5;我需要显示格式化值,例如:10.00000。

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

4

4 回答 4

2

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

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);
于 2013-03-16T12:40:15.117 回答
1

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

decimal.Round(yourValue, decimalPosition, MidpointRounding.AwayFromZero);
于 2013-03-16T12:34:17.063 回答
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);
于 2013-03-16T12:55:02.833 回答
0

使用 FORMATASNUMBER(Value, decimalPosition) 而不是 math.round

抱歉,我忘了它是 c# 而不是 VB 但你可以在 MSDN 上阅读它

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

命令是 String.FormatNumber(blah blah blah)

实际的声明是......

public static string FormatNumber (
  Object Expression,
  [OptionalAttribute] int NumDigitsAfterDecimal,
  [OptionalAttribute] TriState IncludeLeadingDigit,
  [OptionalAttribute] TriState UseParensForNegativeNumbers,
  [OptionalAttribute] TriState GroupDigits
)
于 2013-03-16T12:33:21.517 回答