我正在關注如何使用SDL製作遊戲的教程。在教程中的某個時刻,我需要計算遊戲的FPS。本教程將執行以下操作:1000.f中的.f是什麼意思? C++
caption << "Average Frames Per Second: " << frame/(fps.get_ticks()/1000.f);
現在,我知道代碼究竟是幹什麼的,除了它除以1000.f.部分我一直在尋找,但只是找不到.f的意思。
所以我的問題是,.f是什麼意思?那爲什麼呢?
我正在關注如何使用SDL製作遊戲的教程。在教程中的某個時刻,我需要計算遊戲的FPS。本教程將執行以下操作:1000.f中的.f是什麼意思? C++
caption << "Average Frames Per Second: " << frame/(fps.get_ticks()/1000.f);
現在,我知道代碼究竟是幹什麼的,除了它除以1000.f.部分我一直在尋找,但只是找不到.f的意思。
所以我的問題是,.f是什麼意思?那爲什麼呢?
1000
是int
字面值。
1000.
是一個double
文字。
1000.f
是一個float
文字。
它告訴你,字面1000.
應被視爲float
。有關詳細信息,請查看here。
這意味着這是一個float
常數而不是double
常數。至於效果,在大多數C++編譯器上,它將不起作用,因爲float
將被轉換爲double
來執行除法。
這意味着1000.f被視爲浮點數。
浮點文字可以有後綴(f,F,l或L)。 「f和F」指定一個float
常數,「l和L」指定一個double
。
.f
使得編號爲float
類型。
剛看到這個有趣的演示:
float a = 3.2;
if (a == 3.2)
cout << "a is equal to 3.2"<<endl;
else
cout << "a is not equal to 3.2"<<endl;
float b = 3.2f;
if (b == 3.2f)
cout << "b is equal to 3.2f"<<endl;
else
cout << "b is not equal to 3.2f"<<endl;
輸出:
一個不等於3.2
b等於3.2F
在這裏ideone做實驗:http://www.ideone.com/WS1az
嘗試將變量a
的類型從float
更改爲double
,再次查看結果!
爲什麼它是一個雙和浮動在同一時間?他們爲什麼要那樣做? – 0x499602D2 2012-11-04 13:09:56