0

TI-84 でプログラムを作成していますが、数字の桁数を数える方法が必要です。

どうすればそれを行うことができますか?

4

4 に答える 4

2

TI-Basic に触れるのは久しぶりですが、数字の桁数を数える数学的な方法があることは知っています。各場所は 10 の倍数なので、(数字の 10 を底とする対数) に 1 を加えたものを使用できるはずです。これは、正の整数を使用していると仮定しています。

別のより一般的な解決策は、文字列に変換された数値の長さを取得することです。ここにいくつかのドキュメントがあるようです: http://tibasicdev.wikidot.com/number-to-string2

于 2015-01-29T02:52:57.687 に答える
1

TI-84 を使用しているため、これらの 68k/NSpire の回答は具体的な質問には答えません。自然数に 1+int(log(X)) を使用するのは簡単ですが、ゼロ以外の整数もサポートしたい場合はどうすればよいでしょうか? このプログラム (わずか 9 バイト) でうまくいくはずです。

Prompt X
1+int(log(abs(X

負の記号を数字として数えたい場合(X<0)+は、2 行目の先頭に追加するだけです。


私はまた、まったく異なる解決策を持っています...実数、15文字の精度(小数点を含む)、および負の記号カウントを数字として持つ場合、Number to Stringユーティリティを次のように使用できます(10バイト):

Prompt X:X
prgmS
length(Ans
于 2015-03-01T22:40:12.107 に答える
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.

于 2015-01-29T03:02:46.043 に答える
0

それが正の整数であると仮定すると、数値から 10 の累乗を減算できます。結果が 0 未満の場合、最後に減算された累乗が桁数になります。

例として、数値 643 を考えてみましょう。最初に 10 を引きます - 正の 633 が得られます。次に 100 を試してみてください - 正の 543 が得られます。次に 1000 を試すと -357 になります。したがって、桁数は 3 です (10^3 で与えられます)。

于 2015-01-29T02:56:47.230 に答える