C# 填充小数点
C# Padding Decimal Points
我想把我的数字小数点补到 6。
所以 0.0345
--> 变成 0.034500
0.6
--> 变成 0.600000
但是无论我在Math.Round中输入什么小数,我下面的代码只是将小数点补到5
var amount = Math.Round(0.0345, 6, MidpointRounding.AwayFromZero);
var amount1 = Math.Round(0.0345, 7, MidpointRounding.AwayFromZero);
结果:
amount = 0.03450
amount1 = 0.03450
谢谢。
有两种可能;如果 amount
是 decimal
类型,您可以添加 zero:
decimal amount = 0.0345m;
amount += 0.000000m;
Console.Write(amount);
结果:
0.034500
或以所需格式表示amount
:
decimal amount = 0.0345m;
Console.Write(amount.ToString("F6"));
如果 amount
是 double
或 float
类型,那么 0.034500 == 0.0345
你所能做的就是 format when将 amount
表示为 string
:
double amount = 0.0345;
...
// F6 format string stands for 6 digits after the decimal point
Console.Write(amount.ToString("F6"));
编辑: 为了创建这样的零,您可以使用
public static decimal Zero(int zeroesAfterDecimalPoint) {
if (zeroesAfterDecimalPoint < 0 || zeroesAfterDecimalPoint > 29)
throw new ArgumentOutOfRangeException(nameof(zeroesAfterDecimalPoint));
int[] bits = new int[4];
bits[3] = zeroesAfterDecimalPoint << 16;
return new decimal(bits);
}
还有MyRound
方法:
private static Decimal MyRound(Decimal value, int digits) {
return Math.Round(value, digits, MidpointRounding.AwayFromZero) +
Zero(digits);
}
private static Decimal MyRound(double value, int digits) =>
MyRound((decimal)value, digits);
...
decimal amount = 0.0345m;
Console.WriteLine(MyRound(amount, 6));
Console.WriteLine(MyRound(0.0345, 7)); // let's provide double and 7 digits
结果:
0.034500
0.0345000
只有当传入值是双倍时,它才有效。
double doubleParsing = 0.0345;
decimal amount = decimal.Parse(doubleParsing.ToString());
amount += 0.000000m;
var result = amount.ToString("F5");
您可以简单地使用带六位小数的格式字符串
decimal value = 0.6m;
Console.WriteLine("{0:0.000000}", value);
value = 0.0345m;
Console.WriteLine("{0:0.000000}", value);
// output
// 0.600000
// 0.034500
我想把我的数字小数点补到 6。
所以 0.0345
--> 变成 0.034500
0.6
--> 变成 0.600000
但是无论我在Math.Round中输入什么小数,我下面的代码只是将小数点补到5
var amount = Math.Round(0.0345, 6, MidpointRounding.AwayFromZero);
var amount1 = Math.Round(0.0345, 7, MidpointRounding.AwayFromZero);
结果:
amount = 0.03450
amount1 = 0.03450
谢谢。
有两种可能;如果 amount
是 decimal
类型,您可以添加 zero:
decimal amount = 0.0345m;
amount += 0.000000m;
Console.Write(amount);
结果:
0.034500
或以所需格式表示amount
:
decimal amount = 0.0345m;
Console.Write(amount.ToString("F6"));
如果 amount
是 double
或 float
类型,那么 0.034500 == 0.0345
你所能做的就是 format when将 amount
表示为 string
:
double amount = 0.0345;
...
// F6 format string stands for 6 digits after the decimal point
Console.Write(amount.ToString("F6"));
编辑: 为了创建这样的零,您可以使用
public static decimal Zero(int zeroesAfterDecimalPoint) {
if (zeroesAfterDecimalPoint < 0 || zeroesAfterDecimalPoint > 29)
throw new ArgumentOutOfRangeException(nameof(zeroesAfterDecimalPoint));
int[] bits = new int[4];
bits[3] = zeroesAfterDecimalPoint << 16;
return new decimal(bits);
}
还有MyRound
方法:
private static Decimal MyRound(Decimal value, int digits) {
return Math.Round(value, digits, MidpointRounding.AwayFromZero) +
Zero(digits);
}
private static Decimal MyRound(double value, int digits) =>
MyRound((decimal)value, digits);
...
decimal amount = 0.0345m;
Console.WriteLine(MyRound(amount, 6));
Console.WriteLine(MyRound(0.0345, 7)); // let's provide double and 7 digits
结果:
0.034500
0.0345000
只有当传入值是双倍时,它才有效。
double doubleParsing = 0.0345;
decimal amount = decimal.Parse(doubleParsing.ToString());
amount += 0.000000m;
var result = amount.ToString("F5");
您可以简单地使用带六位小数的格式字符串
decimal value = 0.6m;
Console.WriteLine("{0:0.000000}", value);
value = 0.0345m;
Console.WriteLine("{0:0.000000}", value);
// output
// 0.600000
// 0.034500