在C#中,从数据库获取实数到Double类型时,SQL会添加随机小数点。

18 浏览
0 Comments

在C#中,从数据库获取实数到Double类型时,SQL会添加随机小数点。

当我从C#输入一个双精度数到数据库时,我在数据库中使用了一个实数类型。当我检查这个值时,它正好是我输入的值。

现在,当我从数据库中检索这个值并将其存储到C#的双精度数中时,它会在末尾添加随机的小数值。数据库中的数字是我想要的正确值,但是作为双精度数的C#中的值是随机的(有时高于,有时低于实际值)。

例如:

- 在数据库中以双精度数的形式输入123.43。

- 查看数据库中的值,它正好是123.43。

- 从数据库获取值并存储到C#的双精度数中,双精度数的值现在是123.4300000305176。

我尝试将数据库中的类型更改为float、decimal等,但是这些类型在将其放入数据库时会以与上述相同的格式改变值。

有关发生了什么或如何修复它的任何帮助吗?

0
0 Comments

问题出现的原因是在从数据库获取实数并在C#中转换为双精度数时,会出现随机添加小数点的情况。解决方法是在数据库和C#代码中都使用Decimal类型。

在数据库中使用Decimal类型可以避免这个问题。但是有人尝试使用Decimal(13,8)时,这个问题仍然存在。只不过这次问题出现在将值放入数据库时,而不仅仅是在尝试检索值时。

因此,需要在数据库和C#代码中都使用Decimal类型才能解决这个问题。但是有人提出了一个问题,为什么从实数到双精度数的转换会出现这种行为呢?尤其是当这个问题在一个表中出现而在另一个表中却没有出现时。

实际上,浮点数和双精度数基本上是对实际数的近似值,因为精确计算会需要太多的计算量。可以参考这个链接stackoverflow.com/questions/618535/…,了解更完整的解释。

0
0 Comments

问题出现的原因是,当将数据库中的real类型的数据获取到C#中的Double类型时,会出现随机添加小数点的情况。

解决方法是,可以尝试使用Single类型来表示DB中的real类型数据。可以参考Microsoft官方文档中的数据映射列表(http://msdn.microsoft.com/en-us/library/ms131092.aspx)。

0