2010-10-01 117 views
3

我看到這個代碼漂浮在intertubes用於確定是否在Windows Mobile設備上有一個VGA屏幕(代碼是Form類的方法中):C#比較FLOAT爲int

SizeF currentScreen = this.CurrentAutoScaleDimensions; 
bool isVGA = currentScreen.Height == 192; 

是它即使屏幕是VGA,因爲浮點不精確(Height屬性是浮點數),也可能將VGA設置爲false?

+0

所以我收集你的問題實際上是否CurrentAutoScaleDimensions可以返回一個非整數浮點值? – 2010-10-01 02:05:24

回答

4

由於(IEEE 754兼容,32位)浮點數can accurately represent all integers (whole numbers) whose absolute value is less than or equal to 2^24,因此不在您提供的示例中。

+0

好的答案!你直截了當地說。如果我真的偏執,我會擔心如果我能保證每個人都會遵循這個標準。我猜想,假定每個人都至少遵循標準足以準確地將小的正整數表示爲浮點數是合理的。是對的嗎? – 2010-10-01 02:20:46

+1

@INTPnerd:值得驗證您所選擇的編程語言是否符合這個(非常常見的)標準。根據3.0規範,C#可以:*兩種浮點類型float和double使用32位單精度和64位雙精度IEEE 754格式表示。* – 2010-10-01 02:25:02

+0

非常有幫助。謝謝。 – 2010-10-01 02:26:32