HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1020
ヂオン小数点以下の表示6解決


ヂオン

リンク

2012/10/20(Sat) 17:36:27|NO.50099

hsp で 小数点以下を完全に文字列として表示する方法は有りますでしょうか?
もし知っている人がいましたら教えてください。



この記事に返信する


YSR

リンク

2012/10/20(Sat) 18:13:56|NO.50104

「完全に」の意味がよく分からない。

○1/3とか2を最後の桁まで表示させたい
→無限小数だから諦めろ

○1/3とか2を例えば2000桁ぐらい表示させたい
→いわゆる「多倍長演算」と呼ばれる分野。ググれば色々情報が出てくると思う。
とりあえず「1/nを任意桁数表示させる」サンプルをば。

;入力 n=61 ;1/nを表示したい数 digit=2000 ;表示させたい桁数 ;初期値 dim num,digit/4+1 ;小数を格納する変数 num(0)=10000 ;初期値 ;計算 foreach num a=num(cnt)/n :b=num(cnt)\n num(cnt)=a if cnt!digit/4 :num(cnt+1)+=b*10000 loop ;出力 sdim output,digit+2 output="0." foreach num output+=strf("%04d",num(cnt)) loop mesbox output,400,400

○いやいや、(標準の)16桁ぐらいでいいんです……
→strf命令で解決。詳しくはヘルプを見よう。
例:

a=1.0/61 mes strf("%.18f",a) mes strf("%.16e",a) mes strf("%.16g",a)



ヂオン

リンク

2012/10/20(Sat) 19:26:24|NO.50105

回答ありがとうございます。
符号有り実数 の 限界の桁数まで表示させたいと思っています。
strf 等で 存在する最下位の桁数まで表示する方法等有るでしょうか?

例えば

0.120000 と有った場合。 0.12 と出力され
0.123456789 だった場合は 0.123456789 の様に末端まで表示するしたいです。



cats

リンク

2012/10/20(Sat) 22:19:00|NO.50110

>0.120000 と有った場合。 0.12 と出力され
こういうことでしょうか?
必要のない0を省くスクリプト。

A=double(0.125) mes "処理前: "+A A=str(A) lp=strlen(A) repeat lp if strmid(A,lp-cnt,1)="0":A=strtrim(A,2,'0') loop mes "処理後: "+A stop



ヂオン

リンク

2012/10/21(Sun) 08:32:28|NO.50116

>> YSR さん cats さん

回答、有難うございます
解決しました。



ヂオン

リンク

2012/10/21(Sun) 08:32:58|NO.50117

解決押し忘れ



ヂオン

リンク

2012/10/21(Sun) 08:32:58|NO.50118

解決押し忘れ



ONION software Copyright 1997-2021(c) All rights reserved.