如何解决C#填充小数点
我想将我的数字小数点填充到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
,则可以添加零:
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
的唯一作用就是格式化{{1} }作为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
,
您可以简单地使用带有六个小数位的格式字符串
decimal value = 0.6m;
Console.WriteLine("{0:0.000000}",value);
value = 0.0345m;
Console.WriteLine("{0:0.000000}",value);
// output
// 0.600000
// 0.034500
,
仅当输入值是双精度值时,这种方式才起作用。
double doubleParsing = 0.0345;
decimal amount = decimal.Parse(doubleParsing.ToString());
amount += 0.000000m;
var result = amount.ToString("F5");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。