4
A
回答
3
關於.NET和更具體的C#,不,System.Decimal
不使用FPU,因爲類型是用軟件模擬的。
另外,System.Decimal
是浮點數,而不是像數據庫中常見的固定精度數。該類型實際上是一個十進制浮點數,它使用10作爲其基址,而不是使用以2爲基數的二進制浮點數(即System.Single
或System.Double
)。如果您嘗試存儲無法精確表示的分數,例如1/3,它仍然具有相同的精度問題。
1
是的,現代語言一般支持浮點數學和整數數學,就是這樣;對固定點,BCD等沒有直接的支持。浮點運算將使用浮點處理器指令完成;現代架構不包含獨立的FPU。
我不知道爲什麼'Decimal'使用浮點數?一個128位的定點類型可以保證a + b-a在任何情況下都會產生b或拋出異常,但是對於'Decimal'來說,等式不成立。 – supercat 2014-10-14 03:00:07