2

私は何かが欠けているに違いない、これはどうしたの?

float controlFrameRate = 1/60;

0.0166666667のようなものを割り当てる必要がありますが、0.00000などが出てくるのはビジュアルスタジオが私に嘘をついているだけですか?

4

4 に答える 4

7

これは、1/60が整数であり、整数除算が切り捨てられるため0であるためです。これはfloatを初期化するために使用さ0.れ、最初にRHS式をfloatにすることで修正できます。

float controlFrameRate = 1.0f/60;

float controlFrameRate = 1/60.0f;

C ++では、などのリテラルは、、、142ありint1.0in3.1416doubleリテラルf1.0f。にしfloatます。f上記の例では、が省略されている可能性があることに注意してください。ただし、doubleの値がfloatの範囲を超える場合、doubleをfloatに割り当てると問題が発生する可能性があります。

于 2012-06-03T16:39:07.247 に答える
3

整数を別の整数で除算すると整数が生成され、切り捨て操作になります。実際の値以下の値が得られます。

定数の少なくとも1つを浮動小数点にして、次のように修正します。

float controlFrameRate = 1.0 / 60;
float controlFrameRate = 1 / 60.0;
float controlFrameRate = 1.0 / 60.0;
于 2012-06-03T16:40:58.150 に答える
2

行う

 float controlFrameRate = 1.f/60;

また

 float controlFrameRate = 1/60.f;

また

 float controlFrameRate = 0.1f/6;

;-)

于 2012-06-03T16:40:18.457 に答える
0

を使用する必要があります1/60.0。そうしないと、結果が得られませんfloat

于 2012-06-03T16:40:20.990 に答える