我有一个BigIntiger,比如1234567890,我正在寻找最快的方法将其转变成以下类似的东西:
答案 0 :(得分:2)
我认为没有内置的方式。
获得"没有剩余的最简单方法"只是通过余数减少值:
"圆角"不给13的剩余部分:
var x = new BigInteger(123456);
var roundedTo13 = x - (x % 13);
或100:
var roundedTo100 = x - (x % 100);
Console.WriteLine(roundedTo100);
如果你需要更传统意义上的舍入 - 检查余数是否大于你想要舍入的值和你要舍入的数字的符号。如果余数(x%100)的值大于一半,则需要添加/减去100。
答案 1 :(得分:0)
另一种方法是拆分字符串。虽然可能存在性能问题,但结果还可以。
//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));
}