メインコンテンツへスキップ

整数に小数点以下を入力する方法

コメント

10件のコメント

  • nkmt

    私なら、そのエディットにバーキングした時、は書式 N8.2CZ
    そこを離れて、
    小数点以下が0かどうかで、式を切り替えます。
    式を整理しますと
    IF( パーキング中変数True or fix( 数値、0,2)<>0、’N8.2CZ'、'N8CZ' )

  • yamamoto

    nkmtさん、コメントありがとうございます。

    記述を教えて頂きありがとうございます。

    この場合、パーキング中変数というのはLastParkで項目にパークがあったときフラグがTrueになるみたいな

    つくりでしょうか?

  • nkmt

    コントロール前  単価
      項目更新   V_単価パーク中   True

    コントロール後  単価
      項目更新   V_単価パーク中   False

    みたいな事は時々やります。

    もしかすると、効率が悪い・・・かもしれません。

    パーキング把握変数を自ら用意しなくてもLastPark(0)=’○○’で自身にパーキング中か
    判断できるかもしれませんが、試さないとほんとの所はわかりません。

  • yamamoto

    nkmtさん、コメントありがとうございます。

    なるほど、そういったパーク認識をされているのですね。

    私の方でもLastParkで作成したのですが、どちらか一方の書式で確定されてしまい

    上手く切替が出来ませんでした。私の作り方もあるかもしれませんが、、、。

    一度nkmtさんの式を利用させて頂きます。

  • yamamoto

    nkmtさん、出来ました!ありがとうございます。

    今後も使わせて頂こうと思います。

    LastParkは記述が難しかったので、もう少し技量が上がったらまた挑戦してみようと思います。

    ありがとうございました。

  • sudo

    yamamotoさん

    こんにちは

     

    私なら文字型にします。

    書式を桁数分「#」にし、右寄せです。

    で、

    小数点を制御するには、コントロール後処理を使います。

    1で割って余りが無いなら整数、0.1で割って余りが無いなら小数点1位とかですかね。

     

    余談ですが、日付も文字型にしています。

    変数は文字型と日付型の両方を用意し、

    コントール後処理で、変換サブルーチンをコールして日付型にセットし、

    その日付型から文字型へ変換します。

    ユーザーが「3.6」と入力した場合、未来なのか過去なのかは判断する必要がありますが、2024/03/06と変換できます。なお、Rを入力したいので、書式は16のままです。

  • nkmt

    sudoさん、こんにちは。
    スレ主ではありませんが・・・
    私はFIXで小数点以下有無を判断してましたが
    数値 MOD 1 での判断の方が記述も
    少ないと思いますのでいいですね。
    情報ありがとうございました。

  • yamamoto

    sudoさん、コメントありがとうございます。

    理解が及ばず申し訳ないのですが文字型だと計算が出来なくなるのではと思いました。

    計算式はEvalStr関数で書くとか、AStrで数値型に変換したもので計算するとかそういった工夫が必要になるのでしょうか。

  • sudo

    計算式は、C=コントロール・S=後のトリガーで記述します。

     

    (EvalStr・Astr関数、記憶にございませんでした。)

    使えそうですが、私が理解していないので、私が知る範囲で記述すると、

     

    例として、数値型変数Cを用意し、VAL(変数A,'5.2')+VAL(変数B,'5.2')

    画面表示項目にSTR(変数C,文字表示式)

    文字表示式はIF(変数C mod 1 ,'5',IF(変数C mod 0.1 ,'5.1','5.2'))

     

    項目がたくさんある場合は、再計算処理をサブルーチン化ですかね。

     

    ちなみにサブルーチンは、

    子タスクに処理内容を記述してコールさせる方法と、

    ユーザイベント「再計算(トリガータイプ:無)」を定義し、

    再計算イベントに処理内容を記述し、各項目のコントール後処理で再計算イベントを起動する方法があります。

  • yamamoto

    sudoさん、コメントありがとうございます。

    なるほど、VAL関数を使用するのですね。ありがとうございます!

    是非、使用させて頂きます。

    今まで、サブルーチンはコールばかりしていたので

    今回教えて頂いた機会に計算イベントに挑戦してみます。

    sudoさん、nkmtさん、ありがとうございました!

サインインしてコメントを残してください。