https://issues.dlang.org/show_bug.cgi?id=12547
--- Comment #2 from [email protected] --- (In reply to Don from comment #1) > FYI: They are defined to return floating-point values because that's what > the equivalent C functions do. They should not be modified. Perhaps lovers of C functions can use core.stdc.math: void main() { import core.stdc.math; double x = 2.7; int y1 = cast(int)floor(x); int y2 = cast(int)ceil(x); int y3 = cast(int)round(x); } But perhaps new functions can be defined in Phobos, with a different name (possibly with a clear name). > Note that if you cast them to integers, you have to worry about overflow. So > that's more complicated. In the cases where you care about overflow can't you use to! function? void main() { import std.math, std.conv; double x = 1e100; int y1 = x.floor.to!int; } > Note also the existence of rndint() and rndlong(). I don't know where they are, sorry for my ignorance. Do you mean stuff like this? http://opensource.apple.com/source/Libm/Libm-93/ppc.subproj/rndint.c In std.math I have found this: pure nothrow @safe long rndtol(real x); Returns x rounded to a long value using the current rounding mode. If the integer value of x is greater than long.max, the result is indeterminate. But what about ints, or floor/ceil? (And usually functions with name that starts with "rnd" are for random generation). Thank you Don for your answers. --
