【问题标题】:Dividing a 2 digit decimal point with out rounding off the results将 2 位小数点除以四舍五入的结果
【发布时间】:2013-11-11 23:50:53
【问题描述】:

我正在开发的程序的结果有问题。

例如,如果我有一个数字 8672.59,我想将它分成 2,结果应该是 4336.295。问题是我如何将它们转换为 2 位小数点并四舍五入结果,这样当我添加 2 个数字时我仍然可以得到正确的数量..

示例。

8672.59 / 2 = 4336.295

如果四舍五入为 2 位小数点,则结果为 4336.30

如何在不四舍五入的情况下将其转换为 2 位小数点,这样如果将其乘以 2,结果将与 8672.59 而不是 8672.60

谢谢!

【问题讨论】:

  • 这简直是不可能的。
  • 对不起 - 我不认为我理解你的问题。我在想你只是在寻找一种方法来四舍五入一个奇数(到 2 位),而不会在四舍五入中丢失或获得任何东西。重读后,我同意@minitech

标签: .net vb.net rounding-error rounding


【解决方案1】:

如果您希望此操作是可逆的,您需要存储足够的信息来取消计算。因此,如果您只将 8672.59 / 2 存储到小数点后两位,则无法通过乘以 2 得到 8672.59。您将得到 8672.58 或 8672.60,具体取决于您存储的是 4336.29 还是 4336.30。

现在,您可以将数字存储到小数点后三位(或任何您需要的精度)并只显示其中两位。只需将存储的数字乘以 2,即可返回原始数字。

【讨论】:

    【解决方案2】:

    从整体中减去四舍五入的结果。

    Dim Total as Double = 8672.59
    Dim OneHalf = Math.Round(Total/2, 2)
    Dim SecondHalf = Total - OneHalf
    

    在您的示例中,Total = 8672.59,因此 OneHalf = 4336.30(四舍五入)

    SecondHalf = 8672.59 - 4336.30 = 4336.29

    【讨论】:

    • 谢谢这个家伙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多