このようなBPを組み、実行すると、
こうなります。
==の上の値は0.6と表示され、下も0.6ですが、2つの値は等しくないと表示されました。
調べてみたところ、単精度と倍精度の違いによるもののようです。
単精度の変数を倍精度に変換する方法はあるのでしょうか?
調べてみたところ、単精度と倍精度の違いによるもののようです。
単精度の変数を倍精度に変換する方法はあるのでしょうか?
単精度と倍精度間の変換方法はわかりませんが、精度が問題なのであれば、Nearly Equal
ノードを使用するのはどうでしょうか?
UE5になってから基本的にFloatはDoubleのようなので例えば以下の画像のようにMakeLiteralFloatを挟めば倍精度になっているとは思います。(なぜかMax Of Float Arrayの戻り値が単精度)
ただ、これを行っても結果はFalseになります。おそらく変換時に非常に小さな誤差が発生しているものと推測されます。
そもそも論ゲームに限らずプログラムにおいてFloatの値の比較を等価演算子で行うこと自体あまり好ましくないので fluflu111さんの解決策が良いのではないかと思います。
Floatの等価演算子による比較はオブジェクト比較として用いるに留め、値の比較は避けた方が良さそうですね。
参考
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.