Eri*_*ert 46
其中一个乘数是速率:1 /速率^(天/ 365).
没有十进制幂函数的原因是因为decimal用于该计算是没有意义的.使用double.
请记住,小数点是为了确保您可以对可以精确表示为短十进制数的值进行精确算术运算.对于合理的rate和days的值,任何其他子表达式的值显然不会完全表示为短十进制值.您将要处理不精确的值,因此请使用专为快速计算稍微不精确的值而设计的类型,例如double.
以双精度计算的结果将以一个或几个百分之一便士的方式消失.谁在乎?你稍后会弄清楚错误.双倍计算费率.一旦你有一个需要再次转换成货币的结果,将结果乘以一万,将其四舍五入到最接近的整数,将其转换为十进制,然后再将它除以一万,你'将结果精确到小数点后四位,这应该足以进行财务计算.
小智 7
这是我用的.
output = (decimal)Math.Pow((double)var1, (double)var2);
Run Code Online (Sandbox Code Playgroud)
现在我只是学习,但这确实有效,但我不知道我是否可以正确解释它.
我认为这样做是接受var1和var2的输入并将它们转换为double,以用作math.pow方法的参数.之后在math.pow前面有(十进制)将值返回到小数并将值放在输出变量中.
我希望有人可以纠正我,如果我的探索是错误的,但我所知道的是它对我有用.
小智 7
我知道这是一个旧线程,但我将其放在这里,以防有人在搜索解决方案时找到它。如果您不想搞乱转换并执行自己的自定义实现,您可以安装 NuGet DecimalMath.DecimalEx 并像使用它一样DecimalEx.Pow(number,power)。