c#object float field与数据库对象float字段不同

时间:2014-11-18 13:42:13

标签: c# sql-server floating-point

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

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

2 个答案:

答案 0 :(得分:4)

如果您确实使用了带有C#float的SQL float,则这些不可比较。您应该使用SQL real来存储C#float。

请点击此处查看完整图表:C# Equivalent of SQL Server DataTypes

另外,在处理浮点数时,您总是有可能遇到这些问题。如果可能,请改用小数。

SQL float的进一步参考!= C#float:Why is a SQL float different from a C# float

答案 1 :(得分:4)

浮动只是在一定程度上是准确的,因为它们的实施。为了准确起见,请使用Decimal

Difference between decimal, float and double in .NET?

  

float和double是浮点二进制点类型。换句话说,他们   代表这样的数字:

     

10001.10010110011

     

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

     

decimal是浮点小数点类型。换句话说,他们   代表这样的数字:

     

12345.65789

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