c# - 在C#中查找数字的位数

标签 c# numbers digits

我正在尝试用 C# 编写一段代码来查找整数的数字位数,该代码对所有数字(负数和正数)都非常有效,但我在 10、100、1000 等方面遇到问题, 它显示的位数比数字的实际位数少一位。比如 1 代表 10 和 2 代表 100..

    long i = 0;
    double n;
    Console.Write("N? ");
    n = Convert.ToInt64(Console.ReadLine());

    do
    {
        n = n / 10;
        i++;
    }
    while(Math.Abs(n) > 1);
    Console.WriteLine(i);

最佳答案

你的 while 条件是 Math.Abs​​(n) > 1,但是在 10 的情况下,你只是第一次大于 1。您可以将此检查更改为 >=1,这应该可以解决您的问题。

do
{
    n = n / 10;
    i++;
}
while(Math.Abs(n) >= 1);

关于c# - 在C#中查找数字的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27471612/

相关文章:

python - 将一个数字的位数相加

c# - 迁移 EF Core 表

c# - 从字符串列表中返回潜在字符串及其下一个字符性能

c# - 防止富文本框中的图片

node.js - mongodb中只查询整数

c - 将 char 减去 '0' 以转换为 int 不好的做法吗?

c# - 数据访问层中的静态与实例写入方法

algorithm - 带负数的最大段和

linux - 是否可以让vim显示行号?

c++ - 使用递归将所有可能的组合(重复)作为数组中的值