C# 如何使用EntityFramework6.x和float列确保浮点精度
我试图理解为什么似乎不可能精确设置浮点/双精度值的精度 但是.NET允许我对这些值使用Math.Round,检查器会准确地显示我取整和/或输入的内容 每当我试图将这样一个值保存回表时,就会得到一条包含86609001159668而不是86609的语句 现在似乎有一种方法可以使输入的值正确地到达表中 我可以更改代码中的任何内容来实现这一目标,但不能更改columntype本身 有什么想法吗 谢谢C# 如何使用EntityFramework6.x和float列确保浮点精度,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我试图理解为什么似乎不可能精确设置浮点/双精度值的精度 但是.NET允许我对这些值使用Math.Round,检查器会准确地显示我取整和/或输入的内容 每当我试图将这样一个值保存回表时,就会得到一条包含86609001159668而不是86609的语句 现在似乎有一种方法可以使输入的值正确地到达表中 我可以更改代码中的任何内容来实现这一目标,但不能更改columntype本身 有什么想法吗 谢谢 Chris。净浮动不是十进制精确的。十进制精度的唯一BCL十进制类型是decimalfloat和dou
Chris。净浮动不是十进制精确的。十进制精度的唯一BCL十进制类型是
decimal
float
和double
是二进制“小数”,因此无法在其中精确表示86.609
。使用Math.Round
只会使值足够接近86.609
,在作为ToString
的一部分进行舍入时,它会打印出来
因此,如果您想要精确的小数点,请在.NET中使用
decimal
。可能重复生成的语句包含86.609001159668
?该值不是作为DbParameter传递的吗?