EF6插入浮点值

时间:2017-11-08 14:19:40

标签: sql entity-framework

我想在使用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

如何在没有迁移的情况下修复它?

2 个答案:

答案 0 :(得分:1)

你应该从不使用float来提高准确性。正如@helper回答的那样,这就是浮点值的存储方式(近似数字数据类型),你无法做任何事情来解决它。

但是,您可以使用DECIMAL代替处理此方案。

答案 1 :(得分:0)

0.12无法以float格式精确表示。没有办法解决这个问题,因为它不是错误:它是如何存储浮点数的。

如果你真的,真的只想要整数百分比(我不推荐),你应该考虑将它们存储为整数(例如:将0.12存储为12)。