use*_*753 3 c# int numbers type-conversion
我知道您可以将 Int 转换为字符串并使用索引器获取位置 x 处的数字,就好像它是一个字符数组一样,但是当您处理多个大数时,这种转换会变得有点开销。
有没有办法在不将数字转换为字符串的情况下检索位置 x 处的数字?
编辑:
谢谢大家,我将对建议的方法进行基准测试,并检查它是否比转换为字符串更好。如果有人有更好的想法,线程将保持 24 小时无人回答。
编辑2:
在对 ulong 数字进行一些简单测试后,我得出结论,与下面提供的方法相比,转换为字符串和提取数字的速度最多可慢 50%,请参阅已批准的答案。
你可以这样做:
int ith_digit(int n, int i) {
return (int) (n / pow(10, i)) % 10;
}
Run Code Online (Sandbox Code Playgroud)
我们可以通过将数字减少到我们想要的数字变成一个位置来获得第 i 个数字,例如:
假设您想要 12345 中的第三个数字,然后通过将其减少到 123(通过将其除以 10 i 次),然后我们可以将该数字的余数除以 10 得到最后一位数字,即我们通缉。