【ハルシオン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で小数点の比較をすると、思ったのと違う結果が返ってきたりします。
こんなコードを書いてみた。
aもbも同じ0.1なんだけど、結果はこう。

小数点の計算は丸め誤差が出てしまうので、こういうことになってしまうらしいです。
こんな時には、Mathfにいい関数があるぽいですね。
Mathf.Approximately
https://docs.unity3d.com/ja/2019.4/ScriptReference/Mathf.Approximately.html
こうすれば、結果はこうなります。

ということで、計算した小数点同士の比較とかには気を付けましょう。
では、あでゅ~ノシ
昨日は東京ゲームダンジョン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)
« 【ハルシオンブログ】RectTransformの設定がStretchの時の幅と高さの取得の仕方【Unity】 | 【ハルシオンブログ】TextMeshPro で文字列の行数を知りたい時 »
コメント
| h o m e |