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

decimalPosition=3の場合; 10.000のようなフォーマットされた値を表示する必要があります。

decimalPosition=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

math.roundの代わりにFORMATASNUMBER(Value、decimalPosition)を使用します

申し訳ありませんが、VBではなくC#であったことを忘れましたが、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 に答える
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 に答える