【问题标题】:Help Rounding division帮助四舍五入师
【发布时间】:2011-08-18 16:03:44
【问题描述】:

我需要最终结果是一个整数。如果除法是整数,但如果以小数结尾,我需要四舍五入(中点)。

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

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

这给了我一个错误:

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

所以我不确定这是否应该存储为类型 double 或不加上错误的问题。

【问题讨论】:

    标签: c# .net math


    【解决方案1】:

    对数字进行四舍五入后,您可以选择将其存储为integerlong(视情况而定)。您可以选择将其存储为浮点类型,例如 floatdouble,但您知道它没有小数部分,因此读者可能会更清楚地将其表示为整数类型。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • OP 想要四舍五入。如果没有第二个参数,它将向下舍入为偶数。
      • "OP 想要四舍五入。"我不是这样读的。也许我错了。
      • 阅读问题的第一句话:“我需要四舍五入”。他想对小数部分 >= .5 的数字进行四舍五入,对于
      猜你喜欢
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 2023-01-12
      • 2012-08-04
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多