2012-02-06 51 views
4

十進制數學使用FPU嗎?十進制數學使用FPU

我會認爲答案是肯定的,但我不確定,因爲小數點不是浮點數,而是一個固定的精確數。

我在找的主要是.NET,但一般的答案也是有用的。

回答

3

關於.NET和更具體的C#,不,System.Decimal不使用FPU,因爲類型是用軟件模擬的。

另外,System.Decimal浮點數,而不是像數據庫中常見的固定精度數。該類型實際上是一個十進制浮點數,它使用10作爲其基址,而不是使用以2爲基數的二進制浮點數(即System.SingleSystem.Double)。如果您嘗試存儲無法精確表示的分數,例如1/3,它仍然具有相同的精度問題。

+0

我不知道爲什麼'Decimal'使用浮點數?一個128位的定點類型可以保證a + b-a在任何情況下都會產生b或拋出異常,但是對於'Decimal'來說,等式不成立。 – supercat 2014-10-14 03:00:07

1

是的,現代語言一般支持浮點數學整數數學,就是這樣;對固定點,BCD等沒有直接的支持。浮點運算將使用浮點處理器指令完成;現代架構不包含獨立的FPU。