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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1008
kazstrf命令で出した数に加えて計算する5未解決


kaz

リンク

2013/10/8(Tue) 00:11:32|NO.57528

初投稿です。

現在、勝率を出すソフトを作ろうと必死にプログラミングしているのですが、

title "勝率計算" mes "勝利数" objsize 50,20 input 勝利数 pos 55,0 mes "敗北数" input 敗北数 objsize 105,20 pos 0,37 button "勝率計算", *keisan stop *keisan font "", 30 a = strf("%.4f",double(勝利数)/(勝利数+敗北数)) mes a*100
と入力すると

-->サポートされない機能を選択しました

というように、計算することができません。 HSP初心者ですので、申し訳ございませんが 解決策をお願いします。 ちなみに、変数aの時点での計算はできています。



この記事に返信する


fortunehill

リンク

2013/10/8(Tue) 01:05:51|NO.57529

/*ご参考(キャスト)*/

ss = "123" mes int(ss)+27 mes double(ss)+27 mes 0+ ss +27 mes 0.0+ ss +27 mes %10 mes %_0_0_1_0 mes 0b10 mes $10 mes 0x10 ; a = double(strf("%.4f",double(勝利数)/(勝利数+敗北数)))



とおりすがり

リンク

2013/10/8(Tue) 01:57:20|NO.57533

kazさんはHSP初心者ということなのでちょっと解説を。
実はstrf()は「文字列」を返す関数なのです。
「文字列」は表示上は数値と同じに見えますが、プログラム内部では別物扱いです。
なので、文字列型変数のaと数値の100を掛け算することはできません。
計算するには「型キャスト」と言って、文字列型から数値型へ変換してやらないといけないのです。

で、どうすればいいの?という話なんですが、現在の書き方だとfortunehillさんのご参考にあるように
dobule()で数値型に変換してから計算します。
	a = double(strf("%.4f",double(勝利数)/(勝利数+敗北数)))
mes a*100
こんな感じですね。
でも、求めておられるのは多分こっちじゃないかと思うんですがどうでしょう。
数値だけ先に計算してからstrf()に渡します。
	a = double(勝利数)/(勝利数+敗北数)*100
mes strf("%.4f",a)

//ちょっと勘違いがあったので削除して書きなおしました。ごめんなさい。



kaz

リンク

2013/10/8(Tue) 18:37:23|NO.57534

>とおりすがり さん

ありがとうございます!解決しました♪
型キャスト、というのも詳しく勉強させていただきます。
aに文字列を代入しないで、数値を代入してから
message命令でstrf命令を使い少数まで表示させるのですね。
理解できました、ありがとうございました。



ゴメ吉

リンク

2013/10/20(Sun) 22:39:04|NO.57705

問題が解決したならば
下にある「解決したら質問者本人がここをチェックしてください。」をチェックして
ください。俺はスレ主じゃありませんので。



.

リンク

2013/10/20(Sun) 22:48:08|NO.57706

いやーウザい、ウザすぎ。管理者気取り?
解決にチェックが入ってないスレッド、全てに注意するつもり?
放置しときゃいいだろ。スレ主は問題が解決したんだし、次に
この掲示板をいつチェックするかなんで分からんだろ。

ホント KY だな。
数年前の hiroaki を思い出すな。
掲示板に何かを書かずにはいられないだろーな。
自分のブログでも作って、そこにずーっと篭ってて欲しい…



ゴメ吉

リンク

2013/10/21(Mon) 11:04:25|NO.57730

>.へ
今度
不快な言葉
書き込んだら

強制的にスレッドに報告
覚えとけ。



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