2009-07-20 38 views
3

由於多種原因,我必須在代碼中使用浮動而不是雙打。用文字在我的代碼,我寫的東西,如:尋找一種更容易的方式在C中使用浮動#

float f = 0.75F; 

或編譯器將BARF因爲它把只是「0.75」作爲雙。有什麼我可以放在我的代碼或在Visual Studio中設置,它會使它像一個浮動「0.75」的文字,而不必每次都追加一個「F」?

+5

加油!你需要定義多少個浮點常量?如果很多,只需使用查找和替換幾次。 – leppie 2009-07-20 14:14:02

+1

我同意@leppie。無論如何,你真的應該限制文字。如果您正在執行大量默認分配,並且它通常具有相同的值,請將它們移動到某處的靜態內部類中,並以此方式引用它們。此外,您可以使用小寫的f而不是大寫的F來表示浮點數字,從而爲您節省了移位擊鍵。如果你在意。 :) – Randolpho 2009-07-20 14:16:26

+0

我很好奇爲什麼有人會使用花車而不是雙打。你能告訴我們你的「多少原因」嗎? – 2009-07-20 14:22:19

回答

0

浮動帶有一個F :-)

14

不 - 幸運的是,國際海事組織。文字在各處都以同樣的方式對待。

這是一件好事 - 想象一些維護開發人員會在一年內看到您的代碼。他看到「0.75」,並認爲「我知道C# - 這是一個雙重的!掛上,它是如何分配給一個浮點變量?」伊克。

到處添加「F」真的很痛苦嗎?你真的有很多常量?你能提取它們作爲常數值,所以你所有的「F後綴」文字在同一個地方。

1

該語言將浮點精度文字解釋爲無處不在。這不是編譯器的一個可配置功能 - 並有很好的理由。

配置語言如何解釋代碼會導致兼容性問題和維護開發人員理解代碼含義的問題。

雖然通常不建議,您可以通過減輕疼痛在C#3一點:

var f = 0.75F; 

只是要小心,因爲忘記這個語法「F」後綴將導致編譯器創建雙倍,而不是浮動。

0

我勸你總是使用

var meaning = 1f; 

因爲「VAR」關鍵字節省了大量的人力解釋和維護時間。

0

正確的行爲不會是一個編譯器來解釋非後綴文字爲單精度浮點值,而是要認識到,從雙轉換浮動應被視爲擴大轉換,因爲對於每一個double價值外,還有無論是正確的一個明確正確的表示,還是(在一些罕見的邊緣情況下),都會有兩個同樣好的值,這兩個值都不會超過每個quadrillion的一個部分,因爲它是明確無誤的值。從語義上講,從floatdouble的轉換應被視爲縮小轉換(因爲它們要求編譯器「猜測」它沒有的信息),但是實際的困難可能導致在該方向上的轉換「擴大」。

也許你應該請求微軟添加一個從doublefloat的擴大轉換?在調用繪圖函數時,計算圖形座標爲double的代碼應該與類型混合在一起時沒有很好的理由。

相關問題