ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


rounding

This is an old revision of the document!


Rounding

ACSUtils provides a full set of functions to round fixed-point numbers to integers.

Current GZDoom provides built-in functions floor, ceil and round, but these functions silently return 0 in Zandronum 3.0, because all unimplemented built-in ACS functions return 0.

Before using ACSUtils, rename either the built-in functions (by editing zspecial.acs) or the ACSUtils functions (by editing acsutils.acs) to something else. Otherwise, ACSUtils won't compile.

There are four rounding modes:

  • trunc – zeroes the fractional part of the number
  • floor – rounds the number down
  • ceil – round the number up
  • round – rounds the number to the closest integer

Example rounding table:

x round(x) floor(x) ceil(x) trunc(x)
1.3 1 1 2 1
1.5 2 1 2 1
1.8 2 1 2 1
-1.3 -1 -2 -1 -1
-1.5 -1 -2 -1 -1
-1.8 -2 -2 -1 -1

Every rounding mode is available as two functions:

  • Functions without the i prefix return a fixed, e.g. floor(2.3) == 2.0.
  • Functions with the i prefix return an int, e.g ifloor(2.3) == 2.
Mode fixed result int result
floor fixed floor(fixed x) int ifloor(fixed x)
ceil fixed ceil(fixed x) int iceil(fixed x)
round fixed round(fixed x) int iround(fixed x)
trunc fixed trunc(fixed x) int itrunc(fixed x)
rounding.1555719049.txt.gz · Last modified: 2019/04/20 03:10 by korshun