使用Math.Pow进行不需要的舍入

时间:2014-07-29 20:03:47

标签: c#

我正在做一些简单的计算,在计算器中输入的值给我1.000243872,但它给了我1.我需要小数点。想知道四舍五入的问题是什么?

私有十进制APR = 4.5,私有十进制PF = 2,私有十进制CF = 2

var value = (double) (1 + (double) APR/(double) PF); => 1.04550625
var value1 = (double)Math.Pow((double)value, (double) CF); =>  1.093083319
var value2 = (double) Math.Pow((double) value1, (double)(1/365)); => 1

2 个答案:

答案 0 :(得分:3)

您要划分两个int值:1365。在大多数编程语言中,此除法返回int值,在您的特定情况下为0. (double)强制转换仅在计算结果后执行。 (double)00。要获得小数结果,您可以在其中一个操作数上使用强制转换:(double)1/3651/(double)365,或使用其他人建议的内容:1.0/3651/365.0。< / p>

答案 1 :(得分:2)

1/365为0(它几乎为0,但随后变为0因为你处理的是整数输入,因此你只得到整数结果),然后转换为双精度,它仍然是0,任何^ 0 = 1

你可以试试1.0 / 365