TI-84 でプログラムを作成していますが、数字の桁数を数える方法が必要です。
どうすればそれを行うことができますか?
TI-Basic に触れるのは久しぶりですが、数字の桁数を数える数学的な方法があることは知っています。各場所は 10 の倍数なので、(数字の 10 を底とする対数) に 1 を加えたものを使用できるはずです。これは、正の整数を使用していると仮定しています。
別のより一般的な解決策は、文字列に変換された数値の長さを取得することです。ここにいくつかのドキュメントがあるようです: http://tibasicdev.wikidot.com/number-to-string2
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
また
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.
それが正の整数であると仮定すると、数値から 10 の累乗を減算できます。結果が 0 未満の場合、最後に減算された累乗が桁数になります。
例として、数値 643 を考えてみましょう。最初に 10 を引きます - 正の 633 が得られます。次に 100 を試してみてください - 正の 543 が得られます。次に 1000 を試すと -357 になります。したがって、桁数は 3 です (10^3 で与えられます)。