【问题标题】:How can I round an integer to the nearest 1000 in Pascal?如何在 Pascal 中将整数舍入到最接近的 1000?
【发布时间】:2013-04-03 11:47:15
【问题描述】:

我在 Pascal 中有一个整数变量。有没有我可以使用的函数可以将该值四舍五入到最接近的 1000,例如:

RoundTo(variable, 1000);

有类似的东西存在吗?还是我应该尝试使用其他方法?

谢谢!

【问题讨论】:

    标签: function variables integer pascal rounding


    【解决方案1】:

    此类问题的一般解决方案是在舍入前后缩放,例如

    y = 1000 * ROUND(x / 1000);
    

    【讨论】:

    • 正是我想要的,但就是想不到!谢谢!
    【解决方案2】:

    使用RoundTo(variable, 3)

    第二个参数指定要四舍五入的数字。由于您想四舍五入到 1000 = 103,您需要指定 3,而不是 1000

    documentation for RoundTo 说:

    function RoundTo(const AValue: Extended; const ADigit: TRoundToEXRangeExtended): Extended;
    

    使用“银行家四舍五入”将浮点值四舍五入为指定数字或十的幂。

    ADigit 表示您希望 AValue 舍入到的十的幂。它可以是 –37 到 37(含)之间的任何值。

    以下示例说明 RoundTo 的使用:

    RoundTo(1234567, 3) = 1235000
    

    (我省略了与您的问题无关的部分)


    旁注:RoundTo 使用银行家的回合,所以 RoundTo(500, 3) = 0RoundTo(1500, 3) = 2000

    【讨论】:

    • 这是一个 Delphi 特有的函数 - 它不是标准的 PASCAL ?
    • @PaulR,它也在freepascalRoundTo
    【解决方案3】:

    x = 1000*(x/1000),x = x - (x mod 1000)

    【讨论】:

    • 以上两个例子都是截断而不是舍入。
    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    相关资源
    最近更新 更多