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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0704
Quiet文字列での判断処理5解決


Quiet

リンク

2008/7/4(Fri) 22:04:10|NO.17145

ども。
雷光さんによる「inputで電卓を作ったんですが・・・」というのがあり、
電卓を応用させて見ました。
screen 0,350,50	;ウインドウIDを初期化
title "電卓" ;タイトルバーの文字表示を「電卓」にする *start clrobj ron="" : kan="" ;ron変数とkan変数を文字列に変換 objsize 50,20 ;オブジェクトのサイズを指定する。 pos 0,0:input ron, 150 ;input ron変数 pos 155,0:mes "?" ;計算記号の場所(下部のボタンで決める) pos 170,0:input kan, 150 ;input kan変数 pos 0,20:button"+",*agari ;+記号 pos 50,20:button "-",*agari ;−記号 pos 100,20:button "*",*agari ;×記号 pos 150,20:button "/",*agari ;÷記号 stop *agari ;結果↓ cls ;画面を初期化 clrobj ;オブジェクトを(全て)初期化 if (ron="")or(kan=""):dialog "数値を入力してください",1,"":goto *start ;何も書かれていない場合のエラー表示 ron=int(ron):kan=int(kan) ;整数値型変数に変換(5,6行目で文字列に変えているため、計算するために) if stat=2:ron+=kan ;+記号の場合の処理 if stat=3:ron-=kan ;−記号の場合の処理 if stat=4:ron*=kan ;×記号の場合の処理 if stat=5:if (ron=0)or(kan=0):dialog "計算できません",1,"":goto *start:else:ron/=kan ;÷記号の場合の処理 pos 0,0:mes "結果 【"+ron+"】" ;結果表示 button "もう一度",*start ;再計算 stop
そこで思ったんですが、intでは整数値のみ、あるいは実数値の小数点以下での
計算で結果が得られます。
なので、実数値では計算が求められません。
で、intをdoubleに変え、どちらでも計算できるようにしたところ、
結果の値よりいらない小数点以下の0まで付いてきました。(12.5 → 12.500000)
これはどんな方法で切り捨てられるのでしょうか?



この記事に返信する


Quiet

リンク

2008/7/4(Fri) 22:08:32|NO.17146

「これは実数値文字列だよ」「これは整数値文字列だよ」などの情報を
返してくれる関数があればよいのですが・・・



たこ

リンク

2008/7/4(Fri) 23:36:00|NO.17148

一応、小数点以下の0を省いた表示方法を紹介


d = 12.5 mes d mes strf("%3.1f", d)

正直、Quietさんのしたいことが分かりませんでした。
日本語の勉強してきます



Quiet

リンク

2008/7/4(Fri) 23:41:25|NO.17149

すいません、よく見るとこちらのほうの日本語がかなり変でしたね。
すいませんでした。

ご教授、感謝いたします。



ぽこみち

リンク

2008/7/5(Sat) 02:38:28|NO.17155

見づらいですが実行して確認してみてください。

a=123456.789 mes a mes "●フォーマットf" mes strf("%.2f",a)+" : 桁足らずは四捨五入" mes strf("%.4f",a)+" : 小数点桁多めに指定すると余分に0が表示される" mes "●フォーマットg" mes strf("%.6g",a)+" : 小数点6桁指定しても全桁分として表示" mes strf("%.20g",a)+" : 桁数が多くても0は表示されない" mes strf("%.5g",a)+" : 桁数が少ないと指数表現"



Quiet

リンク

2008/7/5(Sat) 16:33:22|NO.17158

ぽこみちさんのおかげで自動的にいらない0の数を省いてくれるのが分かりました。
ありがとうございます。



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