我目前正在学习"数字" MSDN上的数据类型并遇到以下短语。
从十进制或数字转换为float或real可能会导致一些问题 精度损失。从int,smallint,tinyint,float转换, 真实的,金钱的或小的金币可以导致十进制或数字 溢出。
在转换"十进制或数字"时,我真的不明白丢失精度/溢出的原因。数据类型。有人可以向我解释一下吗?
答案 0 :(得分:1)
每种不同类型的数字表示具有不同的存储量。一个简单的例子是使用int和tinyint。
tinyint有2个字节的存储空间,因此可以容纳最大值32,767。 int有4个字节,因此可以保持最大值2,147,483,647。
如果您尝试将int转换为tinyint,并且int的值大于tinyint的限制(> 32,767),那么您将遇到问题。有些语言会回绕,有些语言会溢出。
答案 1 :(得分:1)
documentation清楚地涵盖了它。
用于浮点数字的近似数字数据类型 数据。浮点数据是近似值;因此,并非所有的价值观 数据类型范围可以准确表示。
.NET或任何框架中的浮动数字将是近似数字数据类型。
答案 2 :(得分:1)
十进制或数字数据类型实际上是带小数分隔符位置的整数。 它们可以将每个值存储在最小值和最大值之间,与声明的精度相关。正如Ryan所说,你可以在-32k到32k之间的四个字节内存储大约64k个不同的值。如果你使用四字节浮点类型,范围会更宽,但仍然存储 64k不同值。 该范围内的某些值无法精确存储。