num min(
num a,
num b
)

Returns the lesser of two numbers.

Returns NaN if either argument is NaN. The lesser of `-0.0` and `0.0` is `-0.0`. If the arguments are otherwise equal (including int and doubles with the same mathematical value) then it is unspecified which of the two arguments is returned.

## Source

``````/**
* Returns the lesser of two numbers.
*
* Returns NaN if either argument is NaN.
* The lesser of [:-0.0:] and [:0.0:] is [:-0.0:].
* If the arguments are otherwise equal (including int and doubles with the
* same mathematical value) then it is unspecified which of the two arguments
* is returned.
*/
num min(num a, num b) {
// These partially redundant type checks improve code quality for dart2js.
// Most of the improvement is at call sites from the inferred non-null num
// return type.
if (a is! num) throw new ArgumentError(a);
if (b is! num) throw new ArgumentError(b);

if (a > b) return b;
if (a < b) return a;
if (b is double) {
// Special case for NaN and -0.0. If one argument is NaN return NaN.
// [min] must also distinguish between -0.0 and 0.0.
if (a is double) {
if (a == 0.0) {
// a is either 0.0 or -0.0. b is either 0.0, -0.0 or NaN.
// The following returns -0.0 if either a or b is -0.0, and it
// returns NaN if b is NaN.
return (a + b) * a * b;
}
}
// Check for NaN and b == -0.0.
if (a == 0 && b.isNegative || b.isNaN) return b;
return a;
}
return a;
}``````