好吧,“为了钱,总是小数”的规则在 Microsoft 开发团队内部没有应用,因为如果它是:
Namespace: Microsoft.VisualBasic
Assembly: Microsoft.VisualBasic (in Microsoft.VisualBasic.dll)
Financial.IPmt
和所有其他方法将接收/返回 decimal
而不是 double
。
现在我想知道我是否可以使用这些方法而不用担心舍入错误?
我应该使用其他一些图书馆来处理财务问题吗?如果是的话,你能给我一些好的(用于 C#
的)吗?
最佳答案
对货币使用decimal
的规则很有用,因为大多数货币都有小数单位。通过使用小数运算,您可以避免引入和累积舍入误差。
Financial Class functions使用 float 有几个原因:
- 它们不会在内部累积 - 它们基于封闭形式的指数/对数计算,而不是周期内的迭代和求和。
- 他们往往不使用或生成精确的十进制值。例如,精确的小数年利率除以 12 个月的还款额就变成了循环小数。
- 它们主要用于决策支持,最终对实际簿记几乎没有适用性。
Pmt
和四舍五入可以确定名义上的每月付款,但是一旦确定了该金额,余额累积 - 付款、应用的利息费用等 - 以 decimal
。此外,延迟或预付款、付款假期和其他此类不一致将使财务职能提供的预计摊销无效。
关于c# - "For money, always decimal"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2604003/