代码之家  ›  专栏  ›  技术社区  ›  Fabio Gomes

货币价值四舍五入的推荐方法

  •  4
  • Fabio Gomes  · 技术社区  · 17 年前

    首先,请看以下问题:

    SetRoundMode(rmUp) and rounding “round” values like 10, results in 10,0001.

    3 回复  |  直到 9 年前
        1
  •  6
  •   Toon Krijthe    17 年前

    您可以使用Ceil功能:

    newvalue := Ceil(oldvalue * 100) / 100;
    
        2
  •  3
  •   Barry Kelly    17 年前

    请注意,将0.8205四舍五入至0.83,以及将0.8305四舍五入至0.84,将导致四舍五入中的平均向上偏差。默认舍入模式为四舍五入,即向偶数舍入,以避免方向偏差。

    如果您的计算具有双重输入性质,这一点尤其重要。带有方向偏差的舍入可能会导致两侧不匹配。

    SetRoundMode 更改FPU控制字。请注意,这种FPU模式舍入适用于浮点运算,但在考虑 Currency 类型,这是一种定点类型(按比例缩放的64位整数)。中间浮点计算中的一小部分不精确,例如82.000000000000001,即使值为 预计为82.00。更改线程全局舍入模式时必须小心。

        3
  •  1
  •   Pyrolistical    17 年前

    你做错了。

    使用表示所需最高精度的整数。例如,使用一个表示千分之一的整数。然后,当您最终需要将其显示为字符串时,您可以传递大约82050 只有那时

    要真正回答您的问题,不应将0.8205美元四舍五入$应为0.825。