我需要保存UInt32,Int32和float值在一個變量中。我可以在不丟失信息的情況下使用double
(例如,在轉換中丟失一些數字),還是我需要使用任意精度類?我可以在不丟失信息的情況下在雙精度內存儲UInt32,Int32和float值嗎?
從我目前的研究看來我可以,我可以存儲UInt32的最大值沒有鬆動的信息:
Assert.AreEqual(UInt32.MaxValue, Convert.ToUInt32(Convert.ToDouble(UInt32.MaxValue)));
- 因此雙應支持足夠的數字來表示所有的數字小於或等於UInt32的.MaxValue。
- Int32無論如何都有一個較小的值範圍,所以它也被支持。
- 浮點數也應該被支持,因爲它只是加倍而精度較低。
有什麼我錯過了嗎?
那麼,你可以將它們存儲在['Decimal'](http://msdn.microsoft.com/en-us/library/system.decimal。aspx):「這種類型提供了將Decimal值轉換爲SByte,Int16,Int32,Int64,Byte,UInt16,UInt32和UInt64值的方法,將這些整型轉換爲Decimal可以擴大轉換範圍,從而不會丟失信息或拋出異常「。 – Brian