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
函数。
答案 0 :(得分: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);
答案 1 :(得分:1)
您可以尝试这样的事情: -
decimal.Round(yourValue, decimalPosition, MidpointRounding.AwayFromZero);
答案 2 :(得分: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)
并且ACTUAL声明是......
public static string FormatNumber (
Object Expression,
[OptionalAttribute] int NumDigitsAfterDecimal,
[OptionalAttribute] TriState IncludeLeadingDigit,
[OptionalAttribute] TriState UseParensForNegativeNumbers,
[OptionalAttribute] TriState GroupDigits
)
答案 3 :(得分: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);