问题描述
我有一个sql表,该表具有两列“纬度”和“经度”,其值分别为29.47731和-98.46272。列数据类型在sql Server中为float。
当我们使用诸如_context.Table.ToListAsync()之类的EF内核检索记录时,它检索记录,但是当它转换为c#等效的double时?数据类型,它会添加额外的数字,例如-98.4627199999999。
如何避免这种情况?它应该返回与数据库中相同的值。
解决方法
SQL Float和C#Double是不精确的数据类型,它们存储非常接近的数字近似值,但通常不是精确的数字。如果需要保持确切的值,则应使用SQL Numeric数据类型,该数据类型将允许您指定有效位数。尽管C#Decimal数据类型仍然不精确,但它将提供比Double更高的精度近似值。
,我发现您的数据不稳定并且正在处理十进制值,这很可能是“精确表示法”问题。
尝试看看这些:
那些应该根据您的情况使用最精确的符号来指导您的工作:-)