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的类型为doublefloat,则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");

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...