我有一个我从未见过的案例。.NET十进制格式根据来源不同而不同
在一种情况下,我们通过代码分配一个十进制值,例如,值foo.DecimalField = 200M;
当我ToString()
这个没有格式化或者文化,我得到的值"200"
在另一种情况下,当相同的字段是从的EntityFramework分配,调试器仍然表示,该领域的精确值200M
,但当ToString()
'它,它会产生"200.00"
我会得到,如果这是一个浮点问题,或者如果在调试器中有隐藏的小数。
但是由于我使用了一个固定点十进制类型,这怎么可能? 没有网络服务器或任何可能影响文化或涉及的东西。
我错过了什么? 可以小数型运作方式,取决于它如何被初始化(我假设有一些读者从EF获取它时,内部是inits十进制)
也许你可以创建一个SSCCE –
'decimal'仍然是一个浮点类型,它只是十进制而不是二进制。 – dreamlax
当您对它们执行操作时,十进制数保持其精度,因此如果通过具有不同精度的计算得到了两个数字,则这是预期的行为。 –