我很好奇是否有任何简单的方法来检测int
/ long
中的非零数字的数量。我想创建一个小程序,将输入(标准数字)格式化为科学记数法。
我试图找到任何有助于实现这一目标的int
函数,但我不是100%流利,而且似乎没有任何看起来会有所帮助。
另外,我想找到一种方法将每个数字从int
/ long
放入一个列表中,每个数字都是它自己的元素。也许有一种方法可以将零和非零分开。
任何花哨的想法(和评论)都将不胜感激,谢谢!
答案 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