Unityに関連する記事です

 Unity や C# にはfloat 型の値を小数点第何位を切り捨てして戻すという計算用のメソッドはありません。

 Mathf.Floor メソッドや Math.Trancate メソッドは、処理の仔細は異なりますが、基本的には小数点は切り捨てか、丸め目処理になります。
そのため計算用のメソッドを自作されている方も多いと思いますが、ここでは、切り捨て計算用のユーティリティクラスと計算メソッドの作成例を提示いたします。

 切り捨てをしたい小数点の桁数を指定して計算できる点がポイントになります。

using UnityEngine;

public static class CalcHelper
{
    /// <summary>
    /// 小数点を指定した桁数に切り捨てる
    /// </summary>
    /// <param name="value"></param>
    /// <param name="digitsNum"></param>
    /// <returns></returns>
    public static float FloorToDigits(float value, int digitsNum) {

        // Pow メソッドを使い、10 の digitsNum 累乗を行って、指定された桁数までの整数に変換
        // 例えば、value = 3.141592 で digitsNum = 2 の場合
        // floorValue = 3.141592 * 100(10の2乗) = 314.1592 となる
        float floorValue = value * Mathf.Pow(10, digitsNum);

        // 小数点以下を切り捨てる
        // 例えば、floorValue = 314.1592 の場合、floorValue = 314 となる
        floorValue = Mathf.Floor(floorValue);

        // Pow メソッドを使い、10 の digitsNum 累乗を行って、指定された桁数までの小数点以下を持つ値に戻す
        // 例えば、digitsNum = 2 の場合、floorValue = 314 / 100(10の2乗) = 3.14 となる
        floorValue /= Mathf.Pow(10, digitsNum);

        // 上記3行を1行で書いた場合
        //float floorValue = Mathf.Floor(value * Mathf.Pow(10, digitsNum)) / Mathf.Pow(10, digitsNum);

        return floorValue;
    }
}

 第1引数には計算したい float 型の値を指定します。第2引数には切り捨てして残したい小数点の桁数を指定します。(切り捨てする桁数ではありません)
例えば、digitsNum の値が 2 である場合には小数点第3位を切り捨てして、第2位までを持つ値に変換するようになっています。



<使用例>


 CalcHelper クラスは、指定した桁数に切り捨てるメソッドを提供します。
こちらは簡単な使用例です。以下の例では、小数点の第3位までを残すように設定されています。



<その1>
float x = 0.5522f;
int digitsNum = 3;

x = CalcHelper.FloorToDigits(x, digitsNum);

Debug.Log(x);

<Console ビュー>
0.552



<その2>
float x = 0.42f;
float y = 0.45f
int digitsNum = 1;

if(CalcHelper.FloorToDigits(x, digitsNum) >= 0.5f){

    Debug.Log("x");
} 

if(CalcHelper.FloorToDigits(y, digitsNum) >= 0.5f){

    Debug.Log("y");
} 

<Console ビュー>
x
y

 この例では、小数点の第2位を切り捨て、第1位までの値を保持しています。
そのため、x = 0.4f、 y = 0.4f となりますので、Console ビューには x と y が表示されます。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます