Pascal に整数変数があります。その値を最も近い 1000 に丸めることができる使用可能な関数はありますか。たとえば、次のようになります。
RoundTo(variable, 1000);
そのようなものは存在しますか?または、私が試してみるべき別の方法はありますか?
ありがとう!
この種の問題の一般的な解決策は、丸めの前後にスケーリングすることです。
y = 1000 * ROUND(x / 1000);
を使用しRoundTo(variable, 3)
ます。
2 番目のパラメーターは、丸めたい桁数を指定します。1000 = 10 3に丸めたいので3
、 ではなくを指定する必要があります1000
。
のドキュメントにRoundTo
は次のように書かれています:
function RoundTo(const AValue: Extended; const ADigit: TRoundToEXRangeExtended): Extended;
「バンカー丸め」を使用して、浮動小数点値を指定された桁数または 10 の累乗に丸めます。
ADigit は、AValue を四捨五入する 10 の累乗を示します。–37 から 37 (両端を含む) までの任意の値を指定できます。
次の例は、RoundTo の使用法を示しています。
RoundTo(1234567, 3) = 1235000
(ご質問に関係のない部分は省きました)
補足:RoundTo
バンカーのラウンドを使用するのでRoundTo(500, 3) = 0
、 とRoundTo(1500, 3) = 2000
.
x = 1000*(x/1000),
またx = x - (x mod 1000)