FC2ブログ
    11 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 01

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンUnityブログ】計算した後の小数点同士の比較で思ってたものと違う結果が返ってきたよ。 

    坂内っす。
    昨日は東京ゲームダンジョン3がありましたね。
    ちょっと行くことができなかったですが、盛り上がってたようです!
    みなさんお疲れ様でした。
    来月は横浜ゲームダンジョンがあります。
    こちらには遊びに行こうと思っていますので、会える方会いましょう!


    ポケットガール~受け継がれし希望~よろしくお願いします。
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:



    Unityで小数点の比較をすると、思ったのと違う結果が返ってきたりします。


    using UnityEngine;

    public class Blog0731 : MonoBehaviour
    {
    void Start()
    {
    float a = 0.1f;
    float b = 1.1f - 1f;
    Debug.Log("a : " + a + "/b : " + b);
    if (a == b) {
    Debug.Log("同じだよ");
    } else {
    Debug.Log("違うよ");
    }
    }

    }



    こんなコードを書いてみた。
    aもbも同じ0.1なんだけど、結果はこう。




    小数点の計算は丸め誤差が出てしまうので、こういうことになってしまうらしいです。
    こんな時には、Mathfにいい関数があるぽいですね。

    Mathf.Approximately
    https://docs.unity3d.com/ja/2019.4/ScriptReference/Mathf.Approximately.html


    using UnityEngine;

    public class Blog0731 : MonoBehaviour
    {
    void Start()
    {
    float a = 0.1f;
    float b = 1.1f - 1f;
    Debug.Log("a : " + a + "/b : " + b);
    if (Mathf.Approximately(a, b)) {
    Debug.Log("同じだよ");
    } else {
    Debug.Log("違うよ");
    }
    }

    }



    こうすれば、結果はこうなります。




    ということで、計算した小数点同士の比較とかには気を付けましょう。

    では、あでゅ~ノシ


    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/999-f83005cf
    この記事にトラックバックする(FC2ブログユーザー)