Vla*_*den 1 .net c# sql-server entity-framework
我正在使用SQL Server,在其中一个表中我有浮动可空列.当我在Microsoft SQL Server Management Studio中查看该值时,我在其中一个记录中的值为1.3.我还有客户端应用程序通过实体框架(EF)从数据库获取数据,并且它具有该列的相应可空双(双?)属性.现在当我从数据库中获取值时,它的值为1.2999999523162842.
所有这些记录(超过100万)将用于插值,外推和计算,任何最小偏差都将成为重要值.因此,客户端的所有值都必须匹配数据库中的值.
我不能在客户端舍入到第一个十进制数,因为在数据库中有两个,三个,四个或更多小数点的值.
我的问题是如何通过EF从数据库加载数据库后,确保数据库中的所有值都是相同的值?
非常感谢提前.
是不是float一个二进制在SQL Server浮点值?如果是这样,你的价值是不是真的 1.3,因为这是不是二进制浮点精确表示.选项:
decimal在.NET端使用.使用我的DoubleConverter,看起来最接近double1.3的值实际上是1.3000000000000000444089209850062616169452667236328125 - 所以我不确定为什么你会得到你实际看到的价值.最接近的float值是1.2999999523162841796875,这听起来像是你得到的.因此,就好像数据库中的值被转换为32位浮点数而不是64位浮点数.
您的数据库字段实际上是什么样的FLOAT(23)?如果是这样,那与.NET相对应float而不是double.这可以解释事情.