2010-07-07 65 views
11

任何人都可以解釋爲什麼,在.NET框架中,有PointF結構(使用單精度float類型),沒有「PointD」(使用雙精度double類型)?在.NET框架中,爲什麼會出現PointF(float)並且沒有「PointD」(double)?

他們確定這樣的精度在System.Drawing命名空間中永遠不會有意義嗎?還有其他原因嗎?

+5

沒有意義! :) – leppie 2010-07-07 06:54:11

+0

我想即將到來的遷移到雙精度繪圖將不合法兩倍的存儲空間的消耗量在寫這個體面的猜測解釋時。 :-)但我明白你的意思。在可能不是那麼遠的將來,我們可能需要雙精度,因爲我們現在有8 GB的RAM,數千GB的HDD空間64位CPU等,並且永遠不會超過PB,我們會嗎? ;-) – Andreas 2010-07-07 06:55:19

+0

哪個更有用:使用Double X和Y添加圖形點類型,還是允許從Double到Float的隱式轉換? – supercat 2012-02-21 23:43:03

回答

20

在開發GDI +(基於System.Drawing的技術)時,硬件遠遠不能滿足當今的性能和功能,而基於座標系的硬件將給硬件帶來沉重負擔顯示器端沒什麼好處,顯示器具有他們所做的尺寸和分辨率。即使使用今天的怪獸視頻卡,我們今年也只能看到能夠進行雙精度浮點運算的性能,並且這些運算速度仍然是單精度運算速度的1/2。因此,使用Single類型來模擬圖形操作是實用性的選擇。

今天,隨着WPF,我們有一個平臺,開始着眼於未來的十年或兩年,所以使用Double來建模座標系是有意義的。

+2

我很喜歡你在這個答案中給出的解釋。 過去,現在和將來,涵蓋! – 2010-07-07 07:15:07

+0

+1,很好的回答! – 2010-08-05 17:04:24

相關問題