如何计算数字的位数?

时间:2015-01-29 02:48:11

标签: digit ti-basic

我在TI-84上制作了一个程序,我需要一种计算数字位数的方法。

我将如何做到这一点?

4 个答案:

答案 0 :(得分:2)

自从我触及TI-Basic以来已经很长时间了,但是,我确实知道有一种计算数字位数的数学方法。由于每个地方是10的倍数,您应该只能使用(数字的基数10日志)加1。这假设你正在使用正整数。

另一种更通用的解决方案是将数字的长度转换为字符串。看起来这里有一些文档:http://tibasicdev.wikidot.com/number-to-string2

答案 1 :(得分:1)

看到你正在使用TI-84,这些68k / NSpire答案将无法专门回答你的问题。使用1 + int(log(X))作为自然数很容易,但是如果你想支持非零整数呢?这个程序(只有9个字节)可以解决这个问题:

Prompt X
1+int(log(abs(X

如果您想将负数符号计为数字,只需将(X<0)+添加到第二行的开头。


我也有一个完全不同的解决方案......对于任何实数,15个字符的精度(包括小数点)和负符号计数作为数字你可以使用Number to String实用程序如此(10字节):

Prompt X:X
prgmS
length(Ans

答案 2 :(得分:0)

假设它是一个正整数,你可以从数字中减去10的增加幂。如果结果小于0,则减去的最后一个功率是位数。

例如,考虑数字643.首先减去10 - 给出633这是正数。接下来尝试100 - 给出543,这是积极的。接下来尝试1000 - 给出-357。因此,位数是3(由10 ^ 3给出)。

答案 3 :(得分:0)

无论

f(x)
:Func
:   If x = 0
:       Return 1
    0 → n
:   While x >= 1
        x / 10 → x   (integer division would be ideal)
        n + 1 → n
:   End
:   Return n
:End Func

或更好

f(x) =
    if x == 0 then return 1
    return int(10log(x)) + 1

10 日志给出:

1-9      0.~
10-99    1.~
100-999  2.~

10 log x = log x / log 10。