Logo

Programming-Idioms

Declare the integer y and initialize it with the rounded value of the floating point number x .
Ties (when the fractional part of x is exactly .5) must be rounded up (to positive infinity).
New implementation

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
Y : constant Integer := Integer (Float'Rounding (X));
#include <math.h>
int y = (int)floorf(x + 0.5f);
(defn rnd [y] (int (+ y 0.5)))
#include <cmath>
int y = static_cast<int>(std::floor(x + 0.5f));
using System;
long y = (long)Math.Round(x);
import std.math: round;
int y = cast(int) x.round;
var y = x.round();
y = Kernel.round x
integer :: y

y = nint(x)
import "math"
y := int(math.Floor(x + 0.5))
y = floor (x + 1/2)
var y = Math.round(x);
import static java.lang.Integer.parseInt;
import static java.math.RoundingMode.HALF_UP;
import static java.text.NumberFormat.getNumberInstance;
NumberFormat f = getNumberInstance();
f.setRoundingMode(HALF_UP);
f.setMaximumFractionDigits(0);
int y = parseInt(f.format(x));
long y = Math.round(x);
(defun rnd (y) (floor (+ y 0.5)))
function round(float)
    local int, part = math.modf(float)
    if float == math.abs(float) and part >= .5 then return int+1    -- positive float
    elseif part <= -.5 then return int-1                            -- negative float
    end
    return int
end
function round(float)
    return math.floor(float + .5)
end
$y = (int) round($x);
var
  y: integer;
  x: double;
begin
  y := round(x);
end.
my $y = int($x + 1/2);
y = int(x + 0.5)
from decimal import Decimal, Context, ROUND_HALF_UP
c = Context(rounding=ROUND_HALF_UP)
y = round(Decimal(x, c))
y = (x + 1/2r).floor
let y = x.round() as i64;
(define y (round x))