我有一个像 601511616 这样的号码 如果所有数字的长度都是 3 的倍数,如何将数字拆分为数组而不创建字符串
此外,如何在不创建字符串的情况下计算 int 中的数字?
编辑:有没有办法简单地分割数字,知道它总是 3 的倍数...好的输出应该是这样的:{616,511,601}
最佳答案
您可以使用i % 10
来获取整数的最后一位。
然后,您可以使用除以 10 来删除最后一位数字。
1234567 % 10 = 7
1234567 / 10 = 123456
这是代码示例:
int value = 601511616;
List<int> digits = new List<int>();
while (value > 0)
{
digits.Add(value % 10);
value /= 10;
}
// digits is [6,1,6,1,1,5,1,0,6] now
digits.Reverse(); // Values has been inserted from least significant to the most
// digits is [6,0,1,5,1,1,6,1,6] now
Console.WriteLine("Count of digits: {0}", digits.Count); // Outputs "9"
for (int i = 0; i < digits.Count; i++) // Outputs "601,511,616"
{
Console.Write("{0}", digits[i]);
if (i > 0 && i % 3 == 0) Console.Write(","); // Insert comma after every 3 digits
}
IDEOne working demonstration of List and division approach .
其实,如果不需要拆分,只需要3位一组输出,那么有一个非常方便妥当的格式化方式。
它也会起作用:)
int value = 601511616;
Console.WriteLine("{0:N0}", value); // 601,511,616
Console.WriteLine("{0:N2}", value); // 601,511,616.00
关于c# - 如何获取 int 中的数字计数以及如何在不创建字符串的情况下拆分数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31955734/