帮助舍入部门

时间:2011-08-18 16:03:45

标签: c# .net math

我需要最终结果是一个整数。如果除法是一个整数,但如果它以小数结束,我需要向上舍入(中点)。

如果除法为85.5,则向上舍入,结果应为86 如果除法是85.4,它自然会向下舍入......基本舍入规则 如果它是一个整数85,那么我们都很好但是我应该存储结果而不管这三种情况是否为double类型?

double totalFoundPercent = Math.Round(
        (double) (totalNumbersDeleted / (totalNumbers - totalNumbersApproved)), 
                  MidpointRounding.AwayFromZero);

这给了我一个错误:

  

以下方法或属性之间的调用不明确:   'System.Math.Round(double,System.MidpointRounding)'和   'System.Math.Round(decimal,System.MidpointRounding)'

所以我不确定这是否应该最终存储为类型double,以及是否存在错误问题。

2 个答案:

答案 0 :(得分:3)

对数字进行舍入后,您可以根据需要选择将其存储为integerlong。您可以选择将其存储为浮点类型,例如floatdouble,但是如您所知它没有小数部分,读者可能会更清楚地看到它表示为整数类型。

要记住的一点是浮点数能够不精确地存储非常大的数字,这些数字可能不适合常规的int甚至long类型。最长的是9,223,372,036,854,775,807,而最大的double1.7976931348623157 × 10³⁰⁸

然而,该错误令人困惑,因为它应该明显地调用double重载:doubledecimal之间没有隐式转换,并且您的强制转换使类型非常清晰。您确定使用问题中的确切代码收到此错误吗?

答案 1 :(得分:0)

摆脱第二个参数。根据您的描述,您不应该需要它。

double totalFoundPercent = Math.Round((double) (totalNumbersDeleted / (totalNumbers - totalNumbersApproved)));