22億以上の変数を表示する方法

ホーム フォーラム CF2.5使用法全般 22億以上の変数を表示する方法

  • このトピックには4件の返信、4人の参加者があり、最後にyyyyにより5年、 3ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #16045
    yyyy
    参加者

    資金という変数が、クリックする度に1億ずつ増えるようにした場合。
    21億までは問題なく増加していくのですが、22億に達するとなぜかマイナスになってしまいます。

    文字列では「-2100000000」カウンターでは「-999999999」になってしまいます。

    これはそれ以上の値に対応していないということなのでしょうか?
    わかる方がいましたら教えていただきたいです。

    それと対策などがありましたら、そちらも教えていただきたいです。

    #16048
    ラクレス
    参加者

    変数が扱える整数の上下限:-2147483648 から 2147483647
    となっています
    桁を分けて管理するなどで対策出来るのではないかと思います

    リンク先はwikiよりMMF2(だいたいCF2.5も同じ?)の制限に関する情報です
    https://wikiwiki.jp/mmf2/%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF%E9%9B%86/MMF2%E3%81%AE%E6%A7%98%E3%80%85%E3%81%AA%E4%B8%8A%E9%99%90

    #16049
    MYTH
    参加者

    >>yyyyさん

    カウンターではプロパティで決定した範囲内の表示しかできず、プロパティで指定できるのはラクレスさんの仰られているように、約21億~-21億と決まっています。
    しかし数字を文字列として処理すれば、桁数はおそらく理論上文字列の上限まで扱うことができます。

    今回は1億までと10億から10京までの9桁ずつに分割し、それらを文字列に変換して繋げています。
    しかしただ繋げるだけでは桁数が一致しなくなるので、計算中に1億までの桁数が9桁でなくなった場合は高速ループで0を補完・削減して調整しています。

    この方法では加算・減算など単純な計算は可能ですが、その他複雑な計算には対応できないことをご了承ください。
    (工夫次第ではできるかもしれませんが、私にはこれが限界です笑)

    是非サンプルをご確認ください。

    • この返信は5年、 3ヶ月前にMYTHが編集しました。
    Attachments:
    You must be logged in to view attached files.
    #16052
    ASD
    キーマスター

    エクステンションの『Int64 object』や『Int16384』で22億以上の値の計算が可能です。

    標準機能で実現する場合は、前のお二方の通り、カウンタもしくは変数を2つ用意して結合させる方法になるかと思います。

    #16061
    yyyy
    参加者

    みなさんご回答ありがとうございます。
    そうだったのかと納得できました。

    それからMYTHさん、サンプルをありがとうございます。
    とても参考になります。

    ASDさんの仰っているエクステンションもいじってみようと思います。

    みなさんありがとうございました。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。