我想在使用EF6构建的数据库中存储一个百分比值。
所以我定义了:
[Column(TypeName = "float")]
[Range(0, 1)]
public float RepeatedPointValuePercentage { get; set; }
如果我将0.12
插入数据库,表中的值为0.11999999731791
插入值的代码:
var o = new Object{ RepeatedPointValuePercentage = 12f / 100;}
//add to dbset & save changes
如何在没有迁移的情况下修复它?
答案 0 :(得分:1)
你应该从不使用float来提高准确性。正如@helper回答的那样,这就是浮点值的存储方式(近似数字数据类型),你无法做任何事情来解决它。
但是,您可以使用DECIMAL
代替处理此方案。
答案 1 :(得分:0)
0.12无法以float格式精确表示。没有办法解决这个问题,因为它不是错误:它是如何存储浮点数的。
如果你真的,真的只想要整数百分比(我不推荐),你应该考虑将它们存储为整数(例如:将0.12存储为12)。