C# 如何使用EntityFramework6.x和float列确保浮点精度

C# 如何使用EntityFramework6.x和float列确保浮点精度,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我试图理解为什么似乎不可能精确设置浮点/双精度值的精度 但是.NET允许我对这些值使用Math.Round,检查器会准确地显示我取整和/或输入的内容 每当我试图将这样一个值保存回表时,就会得到一条包含86609001159668而不是86609的语句 现在似乎有一种方法可以使输入的值正确地到达表中 我可以更改代码中的任何内容来实现这一目标,但不能更改columntype本身 有什么想法吗 谢谢 Chris。净浮动不是十进制精确的。十进制精度的唯一BCL十进制类型是decimalfloat和dou

我试图理解为什么似乎不可能精确设置浮点/双精度值的精度

但是.NET允许我对这些值使用Math.Round,检查器会准确地显示我取整和/或输入的内容

每当我试图将这样一个值保存回表时,就会得到一条包含86609001159668而不是86609的语句

现在似乎有一种方法可以使输入的值正确地到达表中

我可以更改代码中的任何内容来实现这一目标,但不能更改columntype本身

有什么想法吗

谢谢


Chris

。净浮动不是十进制精确的。十进制精度的唯一BCL十进制类型是
decimal
float
double
是二进制“小数”,因此无法在其中精确表示
86.609
。使用
Math.Round
只会使值足够接近
86.609
,在作为
ToString
的一部分进行舍入时,它会打印出来


因此,如果您想要精确的小数点,请在.NET中使用
decimal

可能重复生成的语句包含
86.609001159668
?该值不是作为DbParameter传递的吗?