Float型変数を単精度から倍精度へ変換したい


このようなBPを組み、実行すると、
image
こうなります。
==の上の値は0.6と表示され、下も0.6ですが、2つの値は等しくないと表示されました。

調べてみたところ、単精度と倍精度の違いによるもののようです。
単精度の変数を倍精度に変換する方法はあるのでしょうか?

単精度と倍精度間の変換方法はわかりませんが、精度が問題なのであれば、Nearly Equalノードを使用するのはどうでしょうか?

answer_image

1 Like

UE5になってから基本的にFloatはDoubleのようなので例えば以下の画像のようにMakeLiteralFloatを挟めば倍精度になっているとは思います。(なぜかMax Of Float Arrayの戻り値が単精度)
ただ、これを行っても結果はFalseになります。おそらく変換時に非常に小さな誤差が発生しているものと推測されます。
image

そもそも論ゲームに限らずプログラムにおいてFloatの値の比較を等価演算子で行うこと自体あまり好ましくないので fluflu111さんの解決策が良いのではないかと思います。

Floatの等価演算子による比較はオブジェクト比較として用いるに留め、値の比較は避けた方が良さそうですね。

参考

1 Like

教えていただきありがとうございます。

このノードを使って進めていこうと思います。

@fluflu111 さん、 @DROSS_JP さん、ありがとうございました! :smiley:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.