我需要最终结果是一个整数。如果除法是一个整数,但如果它以小数结束,我需要向上舍入(中点)。
如果除法为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,以及是否存在错误问题。
答案 0 :(得分:3)
对数字进行舍入后,您可以根据需要选择将其存储为integer
或long
。您可以选择将其存储为浮点类型,例如float
或double
,但是如您所知它没有小数部分,读者可能会更清楚地看到它表示为整数类型。
要记住的一点是浮点数能够不精确地存储非常大的数字,这些数字可能不适合常规的int
甚至long
类型。最长的是9,223,372,036,854,775,807
,而最大的double
是1.7976931348623157 × 10³⁰⁸
。
然而,该错误令人困惑,因为它应该明显地调用double
重载:double
和decimal
之间没有隐式转换,并且您的强制转换使类型非常清晰。您确定使用问题中的确切代码收到此错误吗?
答案 1 :(得分:0)
摆脱第二个参数。根据您的描述,您不应该需要它。
double totalFoundPercent = Math.Round((double) (totalNumbersDeleted / (totalNumbers - totalNumbersApproved)));