我需要在循環中使用兩個1.414 ...的平方根。如何在不輸入數字的情況下定義數學常量?
顯然,我不想一直調用函數Math.Sqrt(2)。當然,這是對現代處理器的單一指令,JIT或編譯器可能會弄清楚發生了什麼,但我希望我的代碼清晰,可讀且快速。
因爲我希望我的代碼清晰易讀,所以我寧願通過調用sqrt2 = Math.Sqrt(2)
來定義此常量,而不是輸入幻數sqrt2 = 1.4142135623731d
。
最後,因爲這個值是一個常數,我想用const
關鍵字聲明它。但是,當我寫:
const double sqrt2 = Math.Sqrt(2);
// const double sqrt2 = 1.4142135623731d;
編譯器會抱怨:
錯誤1的表達被分配到 'SQRT2' 必須是恆定的
我最好如何定義這個價值?
你從那*代碼中得到*那*編譯器錯誤? –
嗯,這裏有點不對勁。該代碼不應該生成編譯器錯誤。雙文字是允許的,它們顯然是不變的。 –
強相關:[如何強制運行時常量爲編譯時間常量?](http://stackoverflow.com/questions/21501470/how-to-force-a-runtime-constant-to-bea-a-編譯時常量) –