ホーム › フォーラム › CF2.5使用法全般 › エディットボックス内の数字の計算
-
投稿者投稿
-
2016-07-13 5:56 pm #1288mrs参加者
エディットボックス内の数式の扱いについての質問になります。
電卓アプリを作成したいのですが、入力された数式の結果の出し方で躓いています。
下記の2種類のタイプを考えており、1)+、-、*、/記号が押される度に計算結果が更新されるタイプ
2)数字と記号を入力された順番に表示して、=が押されたときに
その計算結果を表示させるタイプ1)のタイプは、電卓プログラム関連のサイトを参考にして取り組んでいたのですが、
うまく実現できておりません。
2)のタイプはエディットボックスに入力された数字を=が押されたときに左から順番に
カウンタへ代入していき計算させようかと思ったのですが、カウンタ内の式では
記号が扱えない?ようで苦戦しております。いずれもiPhone/Android用アプリで検討しています。
上記につきまして、何かよい実現方法はありますでしょうか?
よろしくお願いいたします。- このトピックはmrsが7年、 9ヶ月前に変更しました。
2016-07-13 7:10 pm #1295ASDキーマスター実現内容についてもう少し詳しい情報をお願いします。
1)は通常の電卓と同じだと想像いたしますが、2)は全ての式を表示して最後に計算、という形式でしょうか?そうなると、掛け算・割り算の方が優先されるなどそういう部分も考慮しなければなりませんか?2016-07-13 7:28 pm #1296mrs参加者はい、1)については通常の電卓と同じものです。
2)については、仰る通り全ての式を表示して最後に計算という形です。
例えば、アクティブオブジェクトで作成した数字ボタン(0~9)と記号ボタン(+、-、×、÷)を押して、エディットボックスに下記のような表示をさせたとします。1+2+5×10.5-4÷2
ここまではできるのですが、この状態で、アクティブオブジェクトで作成した記号ボタン(=)を押すと、上記の式が計算されて同じエディットボックスにその結果が表示される、ということを行いたいと思っています。
掛け算、割り算の優先は現時点では特に考慮しておらず、単純に左から順番に計算した結果で問題ございません。
お手数をおかけしますが
よろしくお願いいたします。2016-07-18 2:15 am #1317ASDキーマスター>>mrsさん
とりあえず、基本的な電卓機能を構築してみましたのでご確認ください。
AndroidとiOSでもテストいたしましたが、Androidでは2回目以降の計算が出来ない問題が発生しました。WindowsとiOSでは動作しているため、バグの可能性もあるので現在問い合わせ中です。
それ以外にもAndroidとiOSでは若干表示に差異がありますが、ボタンはアクティブで代用されるようですし、エディットボックスではなく通常の文字列オブジェクトを使用する(もしくはiOSでは専用のiOS用エディットボックスを使う)などである程度は吸収できると思います。– サンプルプログラム
https://blog.clickteam.jp/wp-content/uploads/2016/07/cf25_blog_2016-07-18_calculator.zip2016-07-21 5:33 pm #4112mrs参加者ありがとうございます。
このような方法があるのですね。大変参考になりました。
またどうぞよろしくお願いいたします。2016-07-25 1:48 pm #9638mrs参加者お世話になっております。
頂いたものを参考に同様のものを作成しようとしているのですが、数字入力部分がうまく動作しません。
例えば1+2の計算をしようとした場合、2の入力をするために2のボタンを押してもエディットボックスに表示されず、もう一度押すと表示されます。
記号ボタンを押した後の数字の入力が、2回押さないと反映されない?という状態になっています。
イベントエディタ上の内容も、頂いたものと照らし合わせて確認しているのですが・・・
数字ボタンをアクティブオブジェクトにしていますが、その辺りが問題というようなことはありますでしょうか?一応、現状のデータを添付しておりますので、お手数ですがご確認頂けますと幸いです。
Attachments:
You must be logged in to view attached files.2016-07-26 3:57 pm #10203ASDキーマスター>>mrsさん
すみません。最初からアクティブで作るべきでした。仰るとおり、ボタンオブジェクトとアクティブオブジェクトではクリック時の挙動が微妙に異なるようです。
修正してみましたのでこちらをご確認下さい。何かありましたらまたお知らせ下さい。– サンプルプログラム
https://blog.clickteam.jp/wp-content/uploads/2016/07/cf25_blog_2016-07-26_calc_2.zip2016-07-27 8:16 pm #10210mrs参加者なるほど、かしこまりました。
サンプルプログラムについても大変参考になりました。
現状こちらの内容で問題なさそうです。ありがとうございました。2016-10-12 1:54 pm #13043mrs参加者>ASD様
計算結果の表示部分に関して、iPhoneで実行してみたのですが、数字が右詰めにならなかったため、iOS一行エディットボックスを使ったところ無事右詰めで表示できました。つきましては表示部分で伺いたいのですが、エディットボックスは3桁ごとにコンマ「,」で数値を区切るという表示の方法はできますでしょうか?
2016-10-17 4:35 am #13130ASDキーマスター>>mrsさん
3桁ごとにカンマを付ける機能は標準では存在しないので、自前で構築する必要があります。計算結果を表示する際に、右から1文字ずつ追加していき、3桁ごとにカンマを挿入します。– サンプルプログラム
https://blog.clickteam.jp/wp-content/uploads/2016/10/cf25_blog_2016-10-17_calc_3.zip2016-10-25 8:21 pm #13208mrs参加者>ASD様
サンプルプログラムありがとうございます。
いろいろ参考させて頂いているのですが、頂いたものは記号ボタンを押した時点でカンマが追加されますが、常時(数字ボタンを押すたびにチェックして?)必要であればカンマを追加するという挙動は難しいものでしょうか?お手数をおかけしますが
よろしくお願いいたします。2016-10-27 5:12 pm #13215mrs参加者エディットボックスについてご質問になります。
頂いたサンプルを参考にさせて頂いております。
数字の表示について、イベントエディタ内で指数表記を防止するイベントが記載されていますが、
iPhone上で動かしてみたところ、6桁までは問題ないのですが、7桁以上入力して記号ボタンを
押すと1.23457e+06というような表示になってしまいます。>FloatToString$(A_計算値( “エディットボックス” ), ●, -1)
こちらの●の箇所の数値を大きくしてみたりしているのですが変化はありません。※PC上(フレームを実行)では上記の●の部分の数値の変更は反映されているようです。
iOS版の仕様でしょうか?
最低でも10桁程は表示させたいのですが、何かよい方法がありましたらお教え頂けますと幸いです。2016-11-06 4:37 am #13275ASDキーマスター入力中にもカンマを付けるようにしてみました。ただし、.(ドット)のあと数字を入力する前の状態では、カンマ付加処理時の分割の問題からカンマの位置がズレてしまいます(入力すれば戻ります。)。また、常にループが実行され並べ替え処理が行われるので、負荷としてはあまりよろしくないようにも感じました。
FloatToString$関数の3つ目のパラメーターが-1だと、iOSでは機能しないようです(バグかもしれません)。例えばここを5に変えるなど、小数点以下の桁数を固定にすると、iOS上でも指数にならないことを確認いたしました。
ちなみに、CF2.5が採用している整数型の範囲が-2147483648 から 2147483647ですので、それを超える値は計算できないことをご留意下さい。
– サンプルプログラム
https://blog.clickteam.jp/wp-content/uploads/2016/11/cf25_blog_2016-11-06_calc_4.zip2016-11-14 11:02 pm #13331mrs参加者>ASD様
入力中のカンマ処理ありがとうございます。
小数点入力時のカンマのズレは、バグのように見えてしまうので悩ましい感じではあります。
また、FloatToString$関数の3つ目のパラメーターですが、ここを固定にすると1.30000のように
0がついてしまうのですね・・。
こちらもやはり電卓という点からみるとあまり好ましくないですね。。2016-11-15 7:02 am #13334mrs参加者>ASD様
度々で恐縮ですが、カンマ処理が加わる前のバージョンのものを触っています。
エディットボックスはiOS上では右揃えが反映されないため、iOS一行エディットボックスを追加して、エディットボックスの内容を反映させています。
ただ、少数の入力が6桁~7桁までしか表示されない状態です。
FloatToString$関数を使えば解消できるのかもしれませんが、現状のイベントエディタ上での使用方法が把握しきれておりません。
※整数、少数共に入力自体は9~10桁程度はできるようにしたいと思っています。また、カンマ処理バージョンですと、FloatToString$関数によって指数表記になることを回避していますが、3つ目のパラメーターを固定にすると、少数を入力した際に、o.3000000という具合に、パラメータで設定した値分の0が表示されてしまいます。
これついては、カウンターオブジェクトに入れてみると解消できたのですが、なぜか0から始まる少数の入力に限り、0.10000000000という具合に大量の0が表示されてしまいました。
「1.2」や「9.35」の入力は「1.2」、「9.35」と問題なく入力できたのですが、例えば「0.3」と入力しようとすると、小数点ボタンを押した際に「0.30000000000・・」となってしまいます。
つきましては、一旦カンマ無しバージョンで、下記2点を実現したいと思っており、ご教授頂けますと幸いです。
・指数表示を回避(整数、少数共に入力できる桁数をなるべく多くする)
・FloatToString$関数を使用する場合、小数点以下の表記を正しく(1.300000→1.3、0.1200000→0.12という形)するお手数をおかけしますが
よろしくお願いいたします。Attachments:
You must be logged in to view attached files. -
投稿者投稿
- このトピックに返信するにはログインが必要です。