我想以编程方式确定某个十进制后的下一个十进制。
例如,我的小数为0.0000041
我想以编程方式在函数中生成0.0000042。
如果在以0.0000042运行该函数后再次运行该函数,则新数字将为0.0000043
如果我运行的函数的小数位数为0.0000049,则新数字将为0.0000050,以此类推。...
有没有办法做到这一点?
我不知道从哪里开始,或者不知道要寻找什么样的参考来做这样的事情。
谢谢。
答案 0 :(得分:2)
您似乎正在寻找这样的东西: (请检查以下内容是否要手动指定精度)
static decimal GetNextDecimal(decimal input)
{
int count = BitConverter.GetBytes(decimal.GetBits(input)[3])[2];
return input + (1m / (decimal)Math.Pow(10, count));
}
用法:
decimal num1 = 0.0000041m;
decimal num2 = 0.00002m;
decimal next = GetNextDecimal(num1);
decimal next2 = GetNextDecimal(num2);
Console.WriteLine(next);
Console.WriteLine(next2);
输出:
0.0000042
0.00003
我使用了this answer的一点帮助来获取小数位数。
如果您最初想手动指定精度,则可以改用以下内容:
static decimal GetNextDecimal(decimal input, int precision)
{
return input + (1m / (decimal)Math.Pow(10, precision));
}
..它允许您执行以下操作:
decimal num1 = 0.003m;
decimal next = GetNextDecimal(num1, 3);
decimal next2 = GetNextDecimal(num1, 4);
Console.WriteLine(next);
Console.WriteLine(next2);
输出:
0.004
0.0031