import { GetFloatNumberParts } from "./get-float-number-parts"; import { IsFloat } from "./number"; import { FirstDigit } from "./first-digit"; import { IsGreaterThan } from "./greater-than"; import { Increment } from "./increment"; /** * Type version of `Math.round()`. Returns the value of a number rounded to the nearest integer * @example * ```ts * // 3 * type T0 = Round<3.14>; * // -3 * type T1 = Round<-3.14>; * ``` */ type Round = IsFloat extends true ? GetFloatNumberParts extends [ infer Whole extends number, infer Fraction extends number ] ? IsGreaterThan, 4> extends true ? Increment : Whole : never : T;