SQL Server 中的资金
我使用实体框架作为 ORM,使用 Sql Server 2008 作为服务器。
我的应用程序中有财务操作,因此我使用了资金栏。但是,例如,当结果为 2.99986 时,它会存储在数据库值 2.9998 中,而所需的值是 2.9999。
是否有任何选项可以使其像数学所说的那样工作,如果没有,我如何在 C# 中对数字进行舍入,以便 Math.Round(2.99986) 给出结果 2.9998,只需削减第四位之后的其余数字。
感谢帮助
我想出的唯一解决方案是将我的数字乘以 10000,然后截断它,然后除以 10000 :) 还有其他更好的解决方案吗?
Im using entity framework as ORM and Sql Server 2008 as server.
I have financial operations in my app so that I used money column. But when result is for example 2.99986 it stores in database value 2.9998 while desired is 2.9999.
Is there any option to make it make it work just like math says and if not how can I round numbers in C# so that Math.Round(2.99986) would give as the result 2.9998, simply cuts the rest of sigits after 4th place.
Thanks for help
The only solution I came up with is to multiply my number by 10000 then truncate it and then divide by 10000 :)
Any other better solutions ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是数据类型的限制。看起来它会截断小数点右侧第四位数字之后的任何内容。
来自 MSDN - 使用货币数据:
并且:
更新:
从您的评论看来,您希望在 C# 中解决此问题。在这种情况下,您可以使用
Math.需要
适合您需要的舍入逻辑的枚举。MidpointRounding 的 Round
重载That's a limit of the datatype. Looks like it truncates anything after the 4th digit to the right of the decimal.
From MSDN - Using Monetary Data:
And:
Update:
From your comments it appears that you want to resolve this in C#. In that case, you can use one of the
Math.Round
overloads that takes aMidpointRounding
enumeration that suites the rounding logic that you need.使用它可以有效地截断所需的精度
Use this to effectively truncate on the required precision