2010-02-26 108 views
3

我不得不說,我很高興當我打開c#查看整數數據類型爲Int16,Int32 and Int64。它消除了任何模棱兩可的情況,例如int隨着年齡增加而變大。與整數類型名稱匹配的浮點類型名稱?

令我驚訝的是爲什麼沒有或不似乎是Float16,Float32 and Float64 或在正常使用ATLEAST不是:快速搜索MSDN是指float64爲R8(非託管類型)是不是這個一樣一個雙重

我的猜測是在單倍和雙倍(或甚至擴展(Float80),它不存在在C#中存在儘可能多的歧義,據我所知,我不知道這可能是如何)儘管十進制似乎是一個Float128,我已經注意到它被稱爲「擴展浮點精度」,我們應該看到一個Int128來匹配它嗎?
編輯:沒有任何含糊之處都在單人或雙人(這是一個猜測,但它似乎是真的,我想我會添加此爲清楚起見。)

,我們應該會看到這種命名約定?/如果我們這樣做,你會感激嗎?

或者我們應該更進一步,並有Int<N>爲任意數量的大小? (是的,我知道有支持這種事情圖書館那裏)

+0

鑑於這是一個民意調查風格的問題,也許它應該是社區維基? – Pauk 2010-03-04 16:26:15

回答

1

好了,有各種不同的事情要考慮這裏:

  • 通過.NET暴露
    • 什麼是可用的類型
    • 各有什麼類型稱爲
  • 什麼最終被其他語言,如被別名使用int C#意味着System.Int32

個人而言,我寧願Float32Float64爲CLR類型。我當然可以在F#中看到一些混淆,命名爲「float」(對於System.Double)和「float32」(對於System.Single)。我不希望Decimal被稱爲Float128;可能Decimal128,以允許其他類似的類型。

請注意,Byte不是UInt8順便說一句 - 大概是因爲字節通常用於任意的二進制存儲,而不是真正的數量。

我不認爲有很多理由讓Int<N>具有任意值。至少,我懷疑這個用法是否足夠專業化,以將其歸入自定義類庫而不是將其作爲框架的一部分。 (但是,請注意BigInteger是.NET 4.0的一部分。)

+0

+1,因爲這是一個民意調查風格的問題,我也會首選Float32/Float64 ...非常輕微。對於ada風格的範圍整數,有一點可以說是「Int 」的更進一步,但埃菲爾風格的契約似乎在實踐中更好地涵蓋了這些情況。 – 2010-03-01 20:47:12

0

那麼,它在C#中是浮點型和雙精度型,而不是單倍和雙精度型,但它與普通差異相同。請記住,有一個alias in C# for every built-in type。至於任意數量的大小,F#引入了BigInteger,應該注意這一點,但是指定整數可以容納的合理數量的任意大小很可能是性能命中,因爲內置類型都很精細調整到CLR的表現。

此外,十進制不是IEEE意義上的浮點類型。當然,這是一種高精度類型,允許浮點小數點,但在IEEE的意義上它不是「浮點類型」。除了精度有限之外,它不會做浮動會做的奇怪事情(例如2x2 = 3.9999999999999),因此它經常用於財務計算。

如果您確實在尋找能夠讓您大量計算數字的東西,那麼您可能希望看到像F#這樣的函數式語言,而不是C#。無論如何,函數式語言通常更適合於大量數據處理......它們往往更簡潔。

至於命名約定......我從C#開始...... C#是我的標準,對我來說,其他語言也很奇怪。我想,這一切都是從開發者的角度來看的。