Sourcestd/math/rounding.d
ceil(realx);ceil(doublex);ceil(floatx);import std.math.traits : isNaN;writeln(ceil(+123.456L));// +124writeln(ceil(-123.456L));// -123writeln(ceil(-1.234L));// -1writeln(ceil(-0.123L));// 0writeln(ceil(0.0L));// 0writeln(ceil(+0.123L));// 1writeln(ceil(+1.234L));// 2writeln(ceil(real.infinity));// real.infinityassert(isNaN(ceil(real.nan)));assert(isNaN(ceil(real.init)));
floor(realx);floor(doublex);floor(floatx);import std.math.traits : isNaN;writeln(floor(+123.456L));// +123writeln(floor(-123.456L));// -124writeln(floor(+123.0L));// +123writeln(floor(-124.0L));// -124writeln(floor(-1.234L));// -2writeln(floor(-0.123L));// -1writeln(floor(0.0L));// 0writeln(floor(+0.123L));// 0writeln(floor(+1.234L));// 1writeln(floor(real.infinity));// real.infinityassert(isNaN(floor(real.nan)));assert(isNaN(floor(real.init)));
quantize(alias rfunc = rint, F)(const Fval, const Funit)val to a multiple ofunit.rfunc specifies the rounding function to use; by default this isrint, which uses the current rounding mode.import std.math.operations : isClose;assert(isClose(12345.6789L.quantize(0.01L), 12345.68L));assert(isClose(12345.6789L.quantize!floor(0.01L), 12345.67L));assert(isClose(12345.6789L.quantize(22.0L), 12342.0L));
import std.math.operations : isClose;import std.math.traits : isNaN;assert(isClose(12345.6789L.quantize(0), 12345.6789L));assert(12345.6789L.quantize(real.infinity).isNaN);assert(12345.6789L.quantize(real.nan).isNaN);writeln(real.infinity.quantize(0.01L));// real.infinityassert(real.infinity.quantize(real.nan).isNaN);assert(real.nan.quantize(0.01L).isNaN);assert(real.nan.quantize(real.infinity).isNaN);assert(real.nan.quantize(real.nan).isNaN);
quantize(real base, alias rfunc = rint, F, E)(const Fval, const Eexp)quantize(real base, long exp = 1, alias rfunc = rint, F)(const Fval)val to a multiple ofpow(base,exp).rfunc specifies the rounding function to use; by default this isrint, which uses the current rounding mode.import std.math.operations : isClose;assert(isClose(12345.6789L.quantize!10(-2), 12345.68L));assert(isClose(12345.6789L.quantize!(10, -2), 12345.68L));assert(isClose(12345.6789L.quantize!(10, floor)(-2), 12345.67L));assert(isClose(12345.6789L.quantize!(10, -2, floor), 12345.67L));assert(isClose(12345.6789L.quantize!22(1), 12342.0L));assert(isClose(12345.6789L.quantize!22, 12342.0L));
nearbyint(realx);import std.math.traits : isNaN;writeln(nearbyint(0.4));// 0writeln(nearbyint(0.5));// 0writeln(nearbyint(0.6));// 1writeln(nearbyint(100.0));// 100assert(isNaN(nearbyint(real.nan)));writeln(nearbyint(real.infinity));// real.infinitywriteln(nearbyint(-real.infinity));// -real.infinity
rint(realx);rint(doublex);rint(floatx);import std.math.traits : isNaN;version (IeeeFlagsSupport) resetIeeeFlags();writeln(rint(0.4));// 0version (IeeeFlagsSupport)assert(ieeeFlags.inexact);writeln(rint(0.5));// 0writeln(rint(0.6));// 1writeln(rint(100.0));// 100assert(isNaN(rint(real.nan)));writeln(rint(real.infinity));// real.infinitywriteln(rint(-real.infinity));// -real.infinity
lrint(realx);writeln(lrint(4.5));// 4writeln(lrint(5.5));// 6writeln(lrint(-4.5));// -4writeln(lrint(-5.5));// -6writeln(lrint(int.max - 0.5));// 2147483646Lwriteln(lrint(int.max + 0.5));// 2147483648Lwriteln(lrint(int.min - 0.5));// -2147483648Lwriteln(lrint(int.min + 0.5));// -2147483648L
round(realx);writeln(round(4.5));// 5writeln(round(5.4));// 5writeln(round(-4.5));// -5writeln(round(-5.1));// -5
lround(realx);writeln(lround(0.49));// 0writeln(lround(0.5));// 1writeln(lround(1.5));// 2
trunc(realx);writeln(trunc(0.01));// 0writeln(trunc(0.49));// 0writeln(trunc(0.5));// 0writeln(trunc(1.5));// 1
rndtol(realx);rndtol(doublex);rndtol(floatx);writeln(rndtol(1.0));// 1Lwriteln(rndtol(1.2));// 1Lwriteln(rndtol(1.7));// 2Lwriteln(rndtol(1.0001));// 1L