在C#中,从数据库获取实数到Double类型时,SQL会添加随机小数点。
在C#中,从数据库获取实数到Double类型时,SQL会添加随机小数点。
当我从C#输入一个双精度数到数据库时,我在数据库中使用了一个实数类型。当我检查这个值时,它正好是我输入的值。
现在,当我从数据库中检索这个值并将其存储到C#的双精度数中时,它会在末尾添加随机的小数值。数据库中的数字是我想要的正确值,但是作为双精度数的C#中的值是随机的(有时高于,有时低于实际值)。
例如:
- 在数据库中以双精度数的形式输入123.43。
- 查看数据库中的值,它正好是123.43。
- 从数据库获取值并存储到C#的双精度数中,双精度数的值现在是123.4300000305176。
我尝试将数据库中的类型更改为float、decimal等,但是这些类型在将其放入数据库时会以与上述相同的格式改变值。
有关发生了什么或如何修复它的任何帮助吗?
问题出现的原因是在从数据库获取实数并在C#中转换为双精度数时,会出现随机添加小数点的情况。解决方法是在数据库和C#代码中都使用Decimal类型。
在数据库中使用Decimal类型可以避免这个问题。但是有人尝试使用Decimal(13,8)时,这个问题仍然存在。只不过这次问题出现在将值放入数据库时,而不仅仅是在尝试检索值时。
因此,需要在数据库和C#代码中都使用Decimal类型才能解决这个问题。但是有人提出了一个问题,为什么从实数到双精度数的转换会出现这种行为呢?尤其是当这个问题在一个表中出现而在另一个表中却没有出现时。
实际上,浮点数和双精度数基本上是对实际数的近似值,因为精确计算会需要太多的计算量。可以参考这个链接stackoverflow.com/questions/618535/…,了解更完整的解释。