C# 对象浮点字段不同于数据库对象浮点字段

本文关键字:字段 对象 数据库 不同于 | 更新日期: 2023-09-27 18:31:00

>使用 c# mvc4 和 mssql 我有一个具有浮点字段的对象,现在当我在数据库中查找它时,浮点值为 2.014112E+17,但是当我在代码中获取对象时,它变为 2.01411186E+17。 为什么服务器中的对象和数据库中的对象不同? 我之间没有发生转换, 只是从数据库中读取对象。谢谢

编辑:我正在使用这个浮点作为时间戳将我的一些数据与另一个数据库同步,这个问题导致我有一些问题,有没有办法获得准确的值或将其存储为浮点首先是一个错误的想法?

C# 对象浮点字段不同于数据库对象浮点字段

浮点数由于其实现而只能在一定程度上精确。为准确起见,请使用 Decimal

.NET 中的小数、浮点数和双精度之间的区别?

浮点型

和双精度型是浮点二进制点类型。换句话说,他们 表示如下数字:

10001.10010110011

二进制

数和二进制点的位置都在值中编码。

decimal 是浮点小数点类型。换句话说,他们 表示如下数字:

12345.65789

编辑:您也可以尝试将时间戳另存为 unix 时间戳,这只是自 1970-01-01 以来的秒数。它可能更适合您的需求

如果您实际上使用了带有 C# 浮点数的 SQL 浮点数,则这些没有可比性。 您应该使用 SQL 实际值来存储 C# 浮点数。

有关完整图表,请参阅此处:相当于 SQL Server 数据类型的 C#

顺便说一句,在使用浮点数时,您总是有可能遇到这些问题。 如果可能,请改用小数。

SQL 浮点数

的进一步参考 != C# 浮点数:为什么 SQL 浮点数与 C# 浮点数不同