我有一个 SQL 表,其中有两列“纬度”和“经度”,其值分别为 29.47731 和 -98.46272。 SQL Server 中的列数据类型为 float。
当我们使用 _context.Table.ToListAsync() 等 EF 核心检索记录时,它会检索记录,但是当它转换为 C# 等效 double 时?数据类型,它添加额外的数字,如 -98.4627199999999。
如何避免这种情况?它应该返回与数据库中相同的值。
最佳答案
SQL Float 和 C# Double 是不精确的数据类型,它们存储非常接近的数字,但通常不是精确的数字。如果您需要维护精确的值,您应该使用 SQL 数字数据类型,它允许您指定有效位数;虽然 C# Decimal 数据类型仍然不精确,但它将提供比 Double 更高的精度近似值。
关于sql-server - Entity Framework 核心在 c# 中将 float(db 数据类型)转换为 double 时添加数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63728906/