c# - 如何获取 int 中的数字计数以及如何在不创建字符串的情况下拆分数字

标签 c# integer-arithmetic

我有一个像 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

IDEOne working demonstration of formatting approach .

关于c# - 如何获取 int 中的数字计数以及如何在不创建字符串的情况下拆分数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31955734/

相关文章:

c# - 如何使用linq更改对象的值

c - 带括号的int32和int64的算术运算

c++ - 使用不同表达式计算相同整数时的结果不一致

c - 如何仅使用整数数据类型来计算这个值?

performance - 用 Rust 写一个高效的幂函数

c - 为什么 x - y 在这个函数中不会溢出 TMin?为什么在这种情况下功能错误?

c# - 字典和对象的模型创建问题

c# - 修改wpf中任何矩形的高度后如何重新排列 Canvas 上的矩形?

c# - 接受泰米尔语字体的 Web 应用程序

这个基类的 C# 子类?