在int中检测数字不是零的方法?

时间:2014-06-23 21:43:57

标签: c# .net

我很好奇是否有任何简单的方法来检测int / long中的非零数字的数量。我想创建一个小程序,将输入(标准数字)格式化为科学记数法。

我试图找到任何有助于实现这一目标的int函数,但我不是100%流利,而且似乎没有任何看起来会有所帮助。

另外,我想找到一种方法将每个数字从int / long放入一个列表中,每个数字都是它自己的元素。也许有一种方法可以将零和非零分开。

任何花哨的想法(和评论)都将不胜感激,谢谢!

3 个答案:

答案 0 :(得分:2)

您只需将其转换为字符串(使用InvariantCulture)并仅计算非零数字:

public int NonZeroDigits(int input)
{
    return input.ToString(CultureInfo.InvariantCulture).Count(digit => digit >= '1' && digit <= '9');
}

答案 1 :(得分:2)

计算数字中非零数字的数量

int NumOfNonZeroDigits(long num)
{
    int result = 0;
    while( num != 0)
    {
        if(num % 10 != 0)
        {
            result++;
        }

        num /= 10;
    }

    return result;
}

打印不确定数字:

int num = 43546;

int digitNum = (int) Math.Floor(Math.Log10(n) + 1);

for (int i=0; i <digitNum; i++)
{
    int digit = (num / ((int) Math.Pow(10, i)) ) % 10;
    Console.Writeline(digit);
}
// the third dight would be: (num / 100) % 10

答案 2 :(得分:1)

首先,零?整数的二进制表示中的零是多少?当你把它变成十进制值并将其打印到屏幕?

如果您想要的只是科学记数法,我建议您查看the MSDN-documentation for scientific notation.

示例:

var t = 1234.5678d;
Console.WriteLine(t.ToString("E", CultureInfo.InvariantCulture));
// Will print something along the lines of 1.2345678E+004