繁体   English   中英

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

谢谢你。

有两种可能性; 如果amountdecimal类型,您可以添加

decimal amount = 0.0345m;

amount += 0.000000m;

Console.Write(amount);

结果:

0.034500

或以所需格式表示amount

decimal amount = 0.0345m; 

Console.Write(amount.ToString("F6"));

如果amountdoublefloat类型,则0.034500 == 0.0345并且您所能做的就是在将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

您可以简单地使用带六位小数的格式字符串

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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM