こんにちは
> 今度は、PRINT 入力するときに、数字のべき乗や
> 分数を普通に表示するにはどうすればできますか?
少し意味が不明なのところがあるのでもしかしたら外した回答に
なるかも知れませんが,一応書きます。
(1) 数字のべき乗の表示について
TBasicで扱う数値は浮動小数点型数です。この型の数は内部的的には
1.010101*2^(2)
のように2進数で表現されますが,Print文などで表示する場合は10進
表記に変換されます。(浮動小数点数については,
http://www2.cc.niigata-u.ac.jp/‾takeuchi/tbasic/BackGround/Float.html
に説明がありますので,必要なら参照してください。)
例えば今の場合
5.3125
表示されます。普通の大きさの数はこのような表示をされますが,非常に
大きい数や,小さい数は指数表示と言われる方法で表されます。
例えば,
12345*10^20
のような数は
1234500000000000000000000
ですし,
12345*10^(-20)
のような数は
0.00000000000000012345
ですが,これらはそれぞれ,Printでの表示は
1.2345E24
1.2345E-16
となります。これらのものを
1234500000000000000000000
や
12345*10^20
1.2345*10^24
のように表示させることはTBasicでの機能としては持っていませんが,
プログラムを書けば可能です。
1.2345*10^24
のような表示はEを*10^と書き換えれば良いだけですから簡単です。
A=1.2345E24
Print Replace$(Str$(A),"E","*10^")
で実現されます。
12345*10^20
のような表示等をするには多少プログラミングをしないといけません。
例えば,
A=1.2345e24
P$=Trim$(Str$(A))
Spt=InStr(1,P$,"E")
If Spt>0 then
P$=Left$(P$,1)+Mid$(P$,3,Spt-3)+"*10^"+Trim$(Str$(Val(Right$(P$,Len(P$)-Spt))+Spt-3))
End If
Print P$
な感じです。面倒です。
このようにプログラミングをすれば本来備わっていない機能を追加することができます。
これがプログラミングの醍醐味ですが,本質的でない問題は余りこだわらないで,
備わっている機能を利用するというのも一つの見識です。
(2) 分数について
TBasic では数値は浮動小数点型のみ扱いますので,分数と言うものは
ありません。ですから,数を分数の形にPrint することはできません。
勿論,2/3 のようなものをPrint することはできますが,それは分数と言うより,
文字列としてものです。
Print "2/3"
で可能です。でもこれは期待しているものではないでしょう。
分母が,3で分子が2である数を
A=2/3
としてしまうと,Aの中身は分数でなくそれを小数展開したものとして保持します。
ですから,このとき,
Print A
とすれば,
0.666666666666666667
と表示されます。
2/3 から0.666666666666666667への変換は,自動的ですが,この変換は近似
小数への変換ですから元に戻すことはできません。実際,例えば
2/3と0.666666666666666667は異なる値ですから,戻しようがありません。
プログラムの中で特別な数を定義して,例えば,配列A(1),A(2)を用意して
A(1)に分子,A(2)に分母を格納して,それらの組で分数を表すことにすれば,
例えば,A(1)=2, A(2)=3 に対して,
Print A(1);"/";A(2)
として,2/ 3 と表示することはできます。
TBasic での分数の表示はこのような何らかのプログラムで処理をしたものでないと
普通に表すことはできません。