
UNITYに限ったものではないのですが、Float型の接尾辞fについて
Wikiやhttp://www.wisdomsoft.jp/40.html/を見てみたのですが
ちょっと難しく理解できません。fってどのような時に使うのでしょうか?
Vector3 構造体のコンストラクタの部分で
public Vector3(float x, float y, float z) ←となっていますが、
Vector3 v = new Vector3(765, 961, 876); ←fはついていないですし。
またUNITYのTransformで
PositionをX=0.5、Y=0.5、Z=0.5とするのと、X=0.5f、Y=0.5f、Z=0.5fとするのと位置が全然違います。
分かりやすい説明、サイトなどあれば教えてください
No.2ベストアンサー
- 回答日時:
これは多分、C#の解説を見たんでしょうね。
Unityでは、JavaScript(UnityScript)の他、C#などの言語が使えます。Unityのコードの解説を読むときは、それが何の言語で書かれたものかを理解して読む必要があります。0.5fとかの「f」は、C#で「float型リテラル」を示すものです。リテラルというのはソース・コード内に直接記述される値のことです。C#では、fを付けずに普通に0.5というように書くとdouble型(floatより値の精度が高い値と判断されます。Unityでは、実数を扱うメソッドなどではすべてfloat型が使われているため、そのまま0.5というように書くと叱られるのです。それで、0.5fというように書いて、float型の値にします。
また、Vector3 v = new Vector3(765, 961, 876);というサンプルコードは、これは引数すべてが整数(int値)になっています。C#では、floatなどの実数の引数に整数を指定すると暗示的キャストといって自動的にfloatに変換してくれるんです。だから、わざわざnew Vector3(765f, 961f, 876f);なんて書かなくていいんです。(doubleからfloatへは自動で変換してくれません。だから、0.5はいちいち0.5fと書かないといけません)
ただし、これは「C#という言語を使ってプログラムを書くとき」の話です。UnityのソフトでインスペクターのTransformに値を設定するときは、(Unityのソフトの部分はプログラミング言語とは関係ないので)0.5と書きます。0.5fって数字はありませんから、そんな具合に書くと正しく判断されないでしょう(おそらく、ゼロ扱いになるのでは)。
またUnityのプログラムでも、JavaScriptではソースコードはすべて0.5と書かれます。0.5fとは書きません(書いても動きますが意味ありません)。言語が違えば、書き方も変わってくるのです。
Unityの解説サイトなどでは、C#とJavaScriptが混在しています。そして大抵の場合、C#などの言語は既に理解しているものとして詳しい説明は省いてます。ですので、まずはC#について初歩から学んでおくとよいと思います。
回答ありがとうございます!
丁寧に解説頂き、とても良くわかりました。
C#の初歩について、並行して学んでいきたいと思います。
ありがとうございました。
No.1
- 回答日時:
これは Unity の仕様というよりは C 言語およびその表記を流用している言語の大半で採用している言語仕様の話です。
たとえば 0.5 という値をそのまま書いた場合。これは実数値の 0.5 として扱われます。しかし、上記の大半の言語では実数値を表す型は float と double の 2 種類があり、0.5 が float と double のどちらの型かを仕様で決めなくてはなりません。そして、上記の大半の言語ではこれを double 型の 0.5 と規定しています。
では float 型の 0.5 がほしい場合はどうしたらいいか。そのときのために f を後置した 0.5f という表記を float 型の 0.5 として扱うと言語仕様で規定しています。
http://msdn.microsoft.com/ja-jp/library/aa691085 …
では
> Vector3 v = new Vector3(765, 961, 876);
になぜ f を付けていないかですが、この場合はこう書かれた時点では数値に . が使われていないため整数型の値としてまず扱われます。しかし、整数型の値を float 型の引数の値として扱う時点で暗黙の型変換が行われます。
http://msdn.microsoft.com/ja-jp/library/ms173105 …
http://msdn.microsoft.com/ja-jp/library/y5b434w4 …
つまり、この場合は f をつけなくてもその値が float に自動的に変換されることになっているため、つけてもつけなくてもそれぞれの値は float 型の値として処理されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
- C言語・C++・C# C++ と、 1 2022/11/07 23:45
- その他(プログラミング・Web制作) 物理の斜方投射のシミュレーションにおける位置や速度の単位について 4 2023/05/31 09:50
- C言語・C++・C# キャスト演算について。 1 2023/07/15 15:28
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# C++言語の16進数の表現についておしえてください 1 2022/11/14 17:46
- C言語・C++・C# このプログラミング誰か教えてください 9 2022/04/22 18:50
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムからアイコンファイ...
-
C言語とhtmlの違いを どな...
-
プログラミングについてです。 ...
-
UNITY Float型の接尾辞fって
-
スプレッドシートの作成
-
GCCでグラフィック
-
プログラミング言語の取得方法
-
C言語、C+、C++、C#の違い
-
言語のことで。
-
プログラム言語別用途
-
COBOLでのNOT = の AND条件
-
EXCELの表示について
-
ホームページを作成する際に良...
-
VBScript
-
プログラムに書かれる"%"記号の...
-
初心者におススメのプログラミ...
-
Bassic98 For Windows 4.1の組...
-
チューリング完全とは何か?
-
プログラミング言語は何種類で...
-
C言語の参考書
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
プログラムからアイコンファイ...
-
C言語とhtmlの違いを どな...
-
COBOLでのNOT = の AND条件
-
プログラムに書かれる"%"記号の...
-
UNITY Float型の接尾辞fって
-
C++における継続行
-
COBOLで文字タイプを数字...
-
UWSCはどのプログラミング言語?
-
Excel VBAで文字化けする (英語...
-
VBScriptで引数を省略したい場合
-
vbaとc言語の関連性について
-
VCとVC++
-
TO_CHARで小数点以下がある場合...
-
パスカルケースの由来。
-
VBSでDim、Private、Publicの違い
-
C++ ってなんて読む?
-
C for Linuxでの設定ファイル読...
-
VBSとWSHは読み方が違うだけで...
-
VB.NETからC言語への乗...
おすすめ情報