秒を時、分、秒に変換

4 件の投稿を閲覧中 - 1 ~ 4 件(全 4 件)
  • 著者
    投稿
  • #5507
    yuzuki1010
    一般参加者

    お疲れ様です。秒を時間に変換する作業がうまくできません。ご指導お願いいたします。
    問題点
    4000秒を3600で割って時間を求めたいが、小数点が切りあがってしまう。

    4000秒÷3600=2 6 40になってしまう。
    1 6 40と表示したい。

    #5509
    MZPlatformユーザー会
    サイト管理者

    ビルダー画面のキャプチャ画像のみでは正確な記述がわかりませんが、おそらく整数の割り算ではなく小数の計算で結果が丸められていると思います。

    整数の割り算にはいくつか方法がありますが、例えば整数(BigInteger)格納変数を使って、添付ファイルのように記述する方法があります。演算子コンポーネントを複数使うよりは、こちらの方がシンプルになると思います。変数側のメソッドがあまり日本語化されていないので探しづらいかもしれませんが、ご確認ください。

    添付ファイル:
    #5511
    yuzuki1010
    一般参加者

    ありがとうございます。新しい計算方法も作成していきたいと思います。

    作成したファイルを添付します。
    どこを改善すれば演算子コンポーネントで正常に時間を計算することができるでしょうか?
    整数型であれば小数点は切り捨てされるものと思っていました。
    職場の活動で問題点として挙げているため、解決したいのでご指導お願いします。

    #5515
    MZPlatformユーザー会
    サイト管理者

    整数の割り算はなかなか難しいですが、確かに添付していただいた方法では思った通りにならないようです。これを不具合と考えて他に影響を与えないように修正することも難しいので、やはり前回紹介した方法がおすすめです。

    以下、解説です。

    整数の割り算とするために除算コンポーネントのDecimalPlaceを0にしたようですが、今回の問題はこれが影響しています。除算コンポーネントは常に実数として割り算をしていて、どこまでも割り切れないときの丸め用にDecimalPlaceがあり、かつそのときの丸めモードが四捨五入に限定されています。つまり、DecimalPlaceを0にして整数の割り算をすると、実数として割り算をした結果次第で切り上げになります。

    したがって、除算コンポーネントを使う場合はそのまま実数の計算として使い、結果から小数点以下を切り捨てて整数の割り算の結果にするのが良いと思います。例えば、結果を数値入力フィールドに設定して、フィールドの数値型を実数として小数点以下の最大桁数を0、丸めモードを切り捨てにすれば可能です。

4 件の投稿を閲覧中 - 1 ~ 4 件(全 4 件)
  • このトピックに返信するには、ログインしてください。