有没有一种方法可以舍入或ceil BigInteger
本文关键字:舍入 ceil BigInteger 方法 一种 有没有 | 更新日期: 2023-09-27 18:26:14
我有一个BigIntiger,比如1234567890,我正在寻找最快的方法将其转化为以下内容之一:
- 2000000000
- 130000000
- 1234567900
我不认为有内置的方法可以做到这一点
获得"无余数"的最简单方法是按余数减少值:
"四舍五入"不给出13:的余数
var x = new BigInteger(123456);
var roundedTo13 = x - (x % 13);
或至100:
var roundedTo100 = x - (x % 100);
Console.WriteLine(roundedTo100);
如果您需要更传统意义上的舍入,请检查余数是否大于要舍入的值和要舍入的数字的符号。若余数(x%100)的值大于一半,则需要添加/减去100。
另一种方法是拆分字符串。虽然可能存在性能问题,但结果是可以的
//n=1, 2, 8 to check for your example
static long F(long num, int n)
{
string all = num.ToString();
long headn = Convert.ToInt64(all.Substring(0, n)) + 1;
return (long)(headn * Math.Pow(10, all.Length - n));
}