#+TITLE: Task 3: Rounding
#+AUTHOR: JirR02

* Task

Implement the following rounding function that rounds a 64-bit floating point number (type =double=) to the nearest 32-bit integer (type =int=). You may assume that the type =double= complies with the IEEE standard 754. The function is only required to work correctly if the nearest integer is in the value range of the type =int=, otherwise, the return value of the function is undefined.

**Note: Usage of library rounding functions (standard or others) is not allowed.**

#+begin_src cpp
// PRE: x is roundable to a number in the value range of type @int@
// POST: return value is the integer nearest to x, or the one further
// away from 0 if x lies right in between two integers.
int round_number(double x);
#+end_src

Write your solution in =rounding.h=.

/Hint/: In =C++=, when you convert a =float= or =double= to an =int=, the fractional part gets cut off (truncated). Think about how you can use the truncated number to solve the exercise.

* Solution

#+begin_src cpp
#pragma once

// PRE: x is roundable to a number in the value range of type int
// POST: return value is the integer nearest to x, or the one further
//       away from 0 if x lies right in between two integers.
int round_number(double x) {
  int res;
  if (x < 0)
    res = x - 0.5;
  else
    res = x + 0.5;
  return res;
}
#+end_src

-----

Made by JirR02 in Switzerland 🇨🇭
