2011-12-14 22 views
2

私はXNA(C#)の初心者向けのチュートリアルを進めています。自分のゲーム開発経験を持ち、レンダリングと配置を学ぶと自分の方向性を変えました。C#で10進数を増やす

私はクラスShipVelocityYというプロパティを作成しようとしています。私はつまり、小数点以下である値で、この値を増加することができるようにしたい:

VelocityY += 0.45; 

私はfloatがここで必要なタイプだったことを考え出したが、私がコンパイルしようとすると、私はこのエラーを取得:

Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix to create a literal of this type.

私が知っている限りdoubleを使っていないので、最初の部分が何を意味するのか分かりません。

public float VelocityY = 0; 

は、私が代わりにdoubleとさえintを使用してみましたが、私はまだ非整数でインクリメントすることはできません。VelocityYはこのように宣言されています。整数は正常に機能します。

答えて

7

リテラル0.45のタイプはdoubleです。あなたは小数点を含むリテラルのサフィックスを指定しない場合

VelocityY += 0.45F; 

は基本的に、それは暗黙的にdoubleです:あなたはそれフロートにしたい場合は、コンパイルエラーが言うように、接尾辞fまたはFを使用。あなたはそれを明示的にするために接尾辞を使用することができます。

decimal a = 0.45M; 
float b = 0.45F; 
double c = 0.45D; 
+0

ありがとうございました。この値が 'Vector2.Position.Y'をインクリメントするために使用されていると思われるため、型を' double'に変更するのはおそらく機能しません。私は 'double'ではないと思いますか?もしそうなら、これはすべて理にかなっています。 – Marty

+0

ええ、それはすべてが「倍」か、またはすべてが「浮動」であるべきです。 –

+0

@ MartyWallace:そうです。 'float'に' double'を追加した結果はdoubleで、これを 'float'変数に代入することはできません。 –

1

あなたはデフォルトで

public float VelocityY = 0; 
to 
public double VelocityY = 0; 

または

VelocityY += 0.45; 
to 
VelocityY += 0.45F; 
+0

後者の例は機能しましたが、前者の例は機能しませんでした。奇妙な。 – Marty

+0

別の場所で定義していない限り、最初に動作する必要があります。あなたが何かを逃した。コードに次の行を追加してみてください: 'public double Var = 0.45;'それをチェック... –

0

を変更する必要がありますが、0.45や0.68として与えるすべての値は、C#で、二重ですここでは、与えられた数値が接尾辞Fを追加することで浮動していることをコンパイラに伝える必要があります。

変数+ = 0.45F;

関連する問題