【发布时间】:2015-03-14 18:15:41
【问题描述】:
我需要将 UInt32、Int32 和浮点值保存在一个变量中。我可以使用double 而不丢失信息(例如在转换中丢失一些数字)还是需要使用任意精度类?
从我目前的研究看来我可以,因为我可以存储 UInt32 的最大值而不会丢失信息:
Assert.AreEqual(UInt32.MaxValue, Convert.ToUInt32(Convert.ToDouble(UInt32.MaxValue)));
- 因此 double 应该支持足够的数字来表示所有小于或等于 UInt32.MaxValue 的数字。
- 无论如何,Int32 的取值范围较小,因此也受支持。
- 也应该支持浮点数,因为它只是精度较低的两倍。
有什么我错过的吗?
【问题讨论】:
-
好吧,您可以将它们存储在
Decimal中:“这种类型提供了将 Decimal 值与 SByte、Int16、Int32、Int64、Byte、UInt16、UInt32 和 UInt64 值相互转换的方法。从这些整数类型到 Decimal 的转换正在扩大转换范围,不会丢失信息或引发异常。”
标签: c# double type-conversion precision ieee-754