Number
Utilities for working with numbers.
Edit on GitHubAdded in 0.4.0
No other changes yet.
from "number" include Number
1
-1
0.5
1/2
Infinity
NaN
Type declarations included in the Number module.
Added in 0.6.0
No other changes yet.
enum ParseIntError {
ParseIntEmptyString,
ParseIntInvalidDigit,
ParseIntInvalidRadix,
}
Represents an error that occurred trying to parse an integer.
Variants:
ParseIntEmptyString
Represents an error caused by trying to parse an empty string.
ParseIntInvalidDigit
Represents an error caused by trying to parse a string with an invalid character.
ParseIntInvalidRadix
Represents an error caused by trying to parse with an invalid radix.
Functions and constants included in the Number module.
Added in 0.5.2
No other changes yet.
pi : Number
Pi represented as a Number value.
Added in 0.5.2
No other changes yet.
tau : Number
Tau represented as a Number value.
Added in 0.5.2
No other changes yet.
e : Number
Euler’s number represented as a Number value.
Added in 0.6.0
| version | changes |
|---|---|
0.4.0 | Originally named `add` |
(+) : (num1: Number, num2: Number) => Number
Computes the sum of its operands.
Parameters:
| param | type | description |
|---|---|---|
num1 | Number | The first operand |
num2 | Number | The second operand |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Number | The sum of the two operands |
Number: The sum of the two operandsExamples:
from Number use { (+) }
assert 1 + 2 == 3
Added in 0.6.0
| version | changes |
|---|---|
0.4.0 | Originally named `sub` |
(-) : (num1: Number, num2: Number) => Number
Computes the difference of its operands.
Parameters:
| param | type | description |
|---|---|---|
num1 | Number | The first operand |
num2 | Number | The second operand |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Number | The difference of the two operands |
Number: The difference of the two operandsExamples:
from Number use { (-) }
assert 5 - 2 == 3
Added in 0.6.0
| version | changes |
|---|---|
0.4.0 | Originally named `mul` |
(*) : (num1: Number, num2: Number) => Number
Computes the product of its operands.
Parameters:
| param | type | description |
|---|---|---|
num1 | Number | The first operand |
num2 | Number | The second operand |
num1: The first operandnum2: The second operandReturns:
| type | description |
|---|---|
Number | The product of the two operands |
Number: The product of the two operandsExamples:
from Number use { (*) }
assert 5 * 4 == 20
Added in 0.6.0
| version | changes |
|---|---|
0.4.0 | Originally named `div` |
(/) : (num1: Number, num2: Number) => Number
Computes the quotient of its operands.
Parameters:
| param | type | description |
|---|---|---|
num1 | Number | The dividend |
num2 | Number | The divisor |
num1: The dividendnum2: The divisorReturns:
| type | description |
|---|---|
Number | The quotient of the two operands |
Number: The quotient of the two operandsExamples:
from Number use { (/) }
assert 10 / 2.5 == 4
Added in 0.6.0
| version | changes |
|---|---|
0.5.4 | Originally named `pow` |
(**) : (base: Number, power: Number) => Number
Computes the exponentiation of the given base and power.
Parameters:
| param | type | description |
|---|---|---|
base | Number | The base number |
power | Number | The exponent number |
base: The base numberpower: The exponent numberReturns:
| type | description |
|---|---|
Number | The base raised to the given power |
Number: The base raised to the given powerExamples:
from Number use { (**) }
assert 10 ** 2 == 100
Added in 0.5.4
No other changes yet.
exp : (power: Number) => Number
Computes the exponentiation of Euler’s number to the given power.
Parameters:
| param | type | description |
|---|---|---|
power | Number | The exponent number |
power: The exponent numberReturns:
| type | description |
|---|---|
Number | The Number.e value raised to the given power |
Number: The Number.e value raised to the given powerExamples:
Number.exp(1) == Number.e
Number.exp(10) == 22026.465794806703
Added in 0.4.0
No other changes yet.
sqrt : (x: Number) => Number
Computes the square root of its operand.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to square root |
x: The number to square rootReturns:
| type | description |
|---|---|
Number | The square root of the operand |
Number: The square root of the operandExamples:
Number.sqrt(25) == 5
Added in 0.5.0
No other changes yet.
sign : (x: Number) => Number
Determine the positivity or negativity of a Number.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to inspect |
x: The number to inspectReturns:
| type | description |
|---|---|
Number | -1 if the number is negative, 1 if positive, or 0 otherwise; signedness of -0.0 is preserved |
Number: -1 if the number is negative, 1 if positive, or 0 otherwise; signedness of -0.0 is preservedExamples:
Number.sign(-10000) == -1
Number.sign(222222) == 1
Number.sign(0) == 0
Added in 0.4.0
| version | changes |
|---|---|
0.5.4 | Handle NaN properly |
min : (x: Number, y: Number) => Number
Returns the smaller of its operands.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The first operand |
y | Number | The second operand |
x: The first operandy: The second operandReturns:
| type | description |
|---|---|
Number | The smaller of the two operands |
Number: The smaller of the two operandsExamples:
Number.min(5, 2) == 2
Added in 0.4.0
| version | changes |
|---|---|
0.5.4 | Handle NaN properly |
max : (x: Number, y: Number) => Number
Returns the larger of its operands.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The first operand |
y | Number | The second operand |
x: The first operandy: The second operandReturns:
| type | description |
|---|---|
Number | The larger of the two operands |
Number: The larger of the two operandsExamples:
Number.max(5, 2) == 5
Added in 0.4.0
| version | changes |
|---|---|
0.5.4 | Handle NaN and Infinity properly |
ceil : (x: Number) => Number
Rounds its operand up to the next largest integer.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to round |
x: The number to roundReturns:
| type | description |
|---|---|
Number | The next largest integer of the operand |
Number: The next largest integer of the operandExamples:
Number.ceil(5.5) == 6
Number.ceil(-5.5) == -5
Added in 0.4.0
| version | changes |
|---|---|
0.5.4 | Handle NaN and Infinity properly |
floor : (x: Number) => Number
Rounds its operand down to the largest integer less than the operand.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to round |
x: The number to roundReturns:
| type | description |
|---|---|
Number | The previous integer of the operand |
Number: The previous integer of the operandExamples:
Number.floor(5.5) == 5
Number.floor(-5.5) == -6
Added in 0.4.0
| version | changes |
|---|---|
0.5.4 | Handle NaN and Infinity properly |
trunc : (x: Number) => Number
Returns the integer part of its operand, removing any fractional value.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to truncate |
x: The number to truncateReturns:
| type | description |
|---|---|
Number | The integer part of the operand |
Number: The integer part of the operandExamples:
Number.trunc(5.5) == 5
Added in 0.4.0
| version | changes |
|---|---|
0.5.4 | Handle NaN and Infinity properly |
round : (x: Number) => Number
Returns its operand rounded to its nearest integer.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to round |
x: The number to roundReturns:
| type | description |
|---|---|
Number | The nearest integer to the operand |
Number: The nearest integer to the operandExamples:
Number.round(5.5) == 6
Number.round(5.4) == 5
Number.round(-5.5) == -6
Number.round(-5.4) == -5
Added in 0.4.0
No other changes yet.
abs : (x: Number) => Number
Returns the absolute value of a number. That is, it returns x if x is positive or zero and the negation of x if x is negative.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The operand |
x: The operandReturns:
| type | description |
|---|---|
Number | The absolute value of the operand |
Number: The absolute value of the operandExamples:
Number.abs(-1) == 1
Number.abs(5) == 5
Added in 0.4.0
No other changes yet.
neg : (x: Number) => Number
Returns the negation of its operand.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to negate |
x: The number to negateReturns:
| type | description |
|---|---|
Number | The negated operand |
Number: The negated operandExamples:
Number.neg(-1) == 1
Number.neg(1) == -1
Added in 0.5.3
No other changes yet.
isFloat : (x: Number) => Bool
Checks if a number is a floating point value.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to check |
x: The number to checkReturns:
| type | description |
|---|---|
Bool | true if the value is a floating point number or false otherwise |
Bool: true if the value is a floating point number or false otherwiseExamples:
Number.isFloat(0.5)
Number.isFloat(1.0)
Number.isFloat(Infinity)
Number.isFloat(NaN)
Number.isFloat(1/2) == false
Number.isFloat(1) == false
Added in 0.5.3
No other changes yet.
isInteger : (x: Number) => Bool
Checks if a number is an integer.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to check |
x: The number to checkReturns:
| type | description |
|---|---|
Bool | true if the value is an integer or false otherwise |
Bool: true if the value is an integer or false otherwiseExamples:
Number.isInteger(1)
Number.isInteger(0.5) == false
Number.isInteger(1.0) == false
Number.isInteger(1/2) == false
Number.isInteger(Infinity) == false
Number.isInteger(NaN) == false
Added in 0.5.3
No other changes yet.
isRational : (x: Number) => Bool
Checks if a number is a non-integer rational value.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to check |
x: The number to checkReturns:
| type | description |
|---|---|
Bool | true if the value is a non-integer rational number or false otherwise |
Bool: true if the value is a non-integer rational number or false otherwiseExamples:
Number.isRational(1/2)
Number.isRational(0.5) == false
Number.isRational(1.0) == false
Number.isRational(1) == false
Number.isRational(Infinity) == false
Number.isRational(NaN) == false
Added in 0.4.0
No other changes yet.
isFinite : (x: Number) => Bool
Checks if a number is finite. All values are finite exept for floating point NaN, infinity or negative infinity.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to check |
x: The number to checkReturns:
| type | description |
|---|---|
Bool | true if the value is finite or false otherwise |
Bool: true if the value is finite or false otherwiseExamples:
Number.isFinite(1/2)
Number.isFinite(0.5)
Number.isFinite(1.0)
Number.isFinite(1)
Number.isFinite(Infinity) == false
Number.isFinite(-Infinity) == false
Number.isFinite(NaN) == false
Added in 0.4.0
No other changes yet.
isNaN : (x: Number) => Bool
Checks if a number is the float NaN value (Not A Number).
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to check |
x: The number to checkReturns:
| type | description |
|---|---|
Bool | true if the value is NaN, otherwise false |
Bool: true if the value is NaN, otherwise falseExamples:
Number.isNaN(NaN)
Number.isNaN(Infinity) == false
Number.isNaN(-Infinity) == false
Number.isNaN(1/2) == false
Number.isNaN(0.5) == false
Number.isNaN(1.0) == false
Number.isNaN(1) == false
Added in 0.4.0
No other changes yet.
isInfinite : (x: Number) => Bool
Checks if a number is infinite, that is either of floating point positive or negative infinity. Note that this function is not the exact opposite of isFinite(Number) in that it doesn’t return true for NaN.
Parameters:
| param | type | description |
|---|---|---|
x | Number | The number to check |
x: The number to checkReturns:
| type | description |
|---|---|
Bool | true if the value is infinite or false otherwise |
Bool: true if the value is infinite or false otherwiseExamples:
Number.isInfinite(Infinity)
Number.isInfinite(-Infinity)
Number.isInfinite(NaN) == false
Number.isInfinite(1/2) == false
Number.isInfinite(0.5) == false
Number.isInfinite(1.0) == false
Number.isInfinite(1) == false
Added in 0.6.0
No other changes yet.
isClose :
(a: Number, b: Number, ?relativeTolerance: Number,
?absoluteTolerance: Number) => Bool
Determines whether two values are considered close to each other using a relative and absolute tolerance.
Parameters:
| param | type | description |
|---|---|---|
a | Number | The first value |
b | Number | The second value |
?relativeTolerance | Number | The maximum tolerance to use relative to the larger absolute value a or b |
?absoluteTolerance | Number | The absolute tolerance to use, regardless of the values of a or b |
a: The first valueb: The second value?relativeTolerance: The maximum tolerance to use relative to the larger absolute value a or b?absoluteTolerance: The absolute tolerance to use, regardless of the values of a or bReturns:
| type | description |
|---|---|
Bool | true if the values are considered close to each other or false otherwise |
Bool: true if the values are considered close to each other or false otherwiseExamples:
Number.isClose(1.233, 1.233)
Number.isClose(1.233, 1.233000001)
Number.isClose(8.005, 8.450, absoluteTolerance=0.5)
Number.isClose(4, 4.1, relativeTolerance=0.025)
Number.isClose(1.233, 1.24) == false
Number.isClose(1.233, 1.4566) == false
Number.isClose(8.005, 8.450, absoluteTolerance=0.4) == false
Number.isClose(4, 4.1, relativeTolerance=0.024) == false
Added in 0.4.5
| version | changes |
|---|---|
0.6.0 | Switched from a string-based error message to a structured error enum |
parseInt :
(string: String, radix: Number) => Result<Number, Atoi.ParseIntError>
Parses a string representation of an integer into a Number using the
specified radix (also known as a number system “base”).
If the string has a radix prefix (i.e. “0x”/“0X”, “0o”/“0O”, or “0b”/“0B” for radixes 16, 8, or 2 respectively), the supplied radix is ignored in favor of the prefix. Underscores that appear in the numeric portion of the input are ignored.
Parameters:
| param | type | description |
|---|---|---|
string | String | The string to parse |
radix | Number | The number system base to use when parsing the input string |
string: The string to parseradix: The number system base to use when parsing the input stringReturns:
| type | description |
|---|---|
Result<Number, Atoi.ParseIntError> | Ok(value) containing the parsed number on a successful parse or Err(err) containing a variant of ParseIntError |
Result<Number, Atoi.ParseIntError>: Ok(value) containing the parsed number on a successful parse or Err(err) containing a variant of ParseIntErrorExamples:
Number.parseInt("1", radix=10) == Ok(1)
Number.parseInt("-1", radix=10) == Ok(-1)
Number.parseInt("0xf0", radix=16) == Ok(0x0f0)
Added in 0.5.5
No other changes yet.
parseFloat : (string: String) => Result<Number, String>
Parses a string representation of a float into a Number. Underscores that appear
in numeric portions of the input are ignored.
Parameters:
| param | type | description |
|---|---|---|
string | String | The string to parse |
string: The string to parseReturns:
| type | description |
|---|---|
Result<Number, String> | Ok(value) containing the parsed number on a successful parse or Err(msg) containing an error message string otherwise |
Result<Number, String>: Ok(value) containing the parsed number on a successful parse or Err(msg) containing an error message string otherwiseExamples:
Number.parseFloat("1") == Ok(1.0)
Number.parseFloat("-1") == Ok(-1.0)
Number.parseFloat("-1.5") == Ok(-1.5)
Added in 0.5.5
No other changes yet.
parse : (input: String) => Result<Number, Atoi.ParseIntError>
Parses a string representation of an integer, float, or rational into a Number.
Underscores that appear in the numeric portion of the input are ignored.
Parameters:
| param | type | description |
|---|---|---|
input | String | The string to parse |
input: The string to parseReturns:
| type | description |
|---|---|
Result<Number, Atoi.ParseIntError> | Ok(value) containing the parsed number on a successful parse or Err(msg) containing an error message string otherwise |
Result<Number, Atoi.ParseIntError>: Ok(value) containing the parsed number on a successful parse or Err(msg) containing an error message string otherwiseExamples:
Number.parse("1") == Ok(1)
Number.parse("-1") == Ok(-1)
Number.parse("0xf0") == Ok(0x0f0)
Number.parse("-1.5") == Ok(-1.5)
Added in 0.6.0
No other changes yet.
asin : (angle: Number) => Number
Computes the inverse sine of the given angle.
Parameters:
| param | type | description |
|---|---|---|
angle | Number | A number between -1 and 1, representing the angle’s sine value |
angle: A number between -1 and 1, representing the angle’s sine valueReturns:
| type | description |
|---|---|
Number | The inverse sine (angle in radians between -pi/2 and pi/2) of the given angle or NaN if the given angle is not between-1 and 1 |
Number: The inverse sine (angle in radians between -pi/2 and pi/2) of the given angle or NaN if the given angle is not between-1 and 1Examples:
Number.asin(0) == 0
Number.asin(1) == 1.5707963267948966
Added in 0.6.0
No other changes yet.
acos : (angle: Number) => Number
Computes the inverse cosine of the given angle.
Parameters:
| param | type | description |
|---|---|---|
angle | Number | A number between -1 and 1, representing the angle’s cosine value |
angle: A number between -1 and 1, representing the angle’s cosine valueReturns:
| type | description |
|---|---|
Number | The inverse cosine (angle in radians between -pi/2 and pi/2) of the given angle or NaN if the given angle is not between-1 and 1 |
Number: The inverse cosine (angle in radians between -pi/2 and pi/2) of the given angle or NaN if the given angle is not between-1 and 1Examples:
Number.acos(1) == 0
Number.acos(0) == 1.5707963267948966
Added in 0.6.0
No other changes yet.
atan : (angle: Number) => Number
Computes the inverse tangent of the given angle.
Parameters:
| param | type | description |
|---|---|---|
angle | Number | A number between -1 and 1, representing the angle’s tangent value |
angle: A number between -1 and 1, representing the angle’s tangent valueReturns:
| type | description |
|---|---|
Number | The inverse tangent (angle in radians between -pi/2 and pi/2) of the given angle or NaN if the given angle is not between-1 and 1 |
Number: The inverse tangent (angle in radians between -pi/2 and pi/2) of the given angle or NaN if the given angle is not between-1 and 1Examples:
Number.atan(0) == 0
Number.atan(1) == 0.7853981633974483
Added in 0.6.0
No other changes yet.
atan2 : (y: Number, x: Number) => Number
Computes the angle between the positive x-axis and the ray from the origin to the point (x, y).
Parameters:
| param | type | description |
|---|---|---|
y | Number | The given y coordinate |
x | Number | The given x coordinate |
y: The given y coordinatex: The given x coordinateReturns:
| type | description |
|---|---|
Number | The angle in radians between the positive x-axis and the point (x, y) |
Number: The angle in radians between the positive x-axis and the point (x, y)Examples:
Number.atan2(0, 1) == Number.pi
Added in 0.5.4
No other changes yet.
toRadians : (degrees: Number) => Number
Converts degrees to radians.
Parameters:
| param | type | description |
|---|---|---|
degrees | Number | The value to convert |
degrees: The value to convertReturns:
| type | description |
|---|---|
Number | The value in radians |
Number: The value in radiansExamples:
Number.toRadians(180) == Number.pi
Added in 0.5.4
No other changes yet.
toDegrees : (radians: Number) => Number
Converts radians to degrees.
Parameters:
| param | type | description |
|---|---|---|
radians | Number | The value to convert |
radians: The value to convertReturns:
| type | description |
|---|---|
Number | The value in degrees |
Number: The value in degreesExamples:
Number.toRadians(Number.pi) == 180
Added in 0.6.0
No other changes yet.
clamp : (range: Range<Number>, input: Number) => Number
Constrains a number within the given inclusive range.
Parameters:
| param | type | description |
|---|---|---|
range | Range<Number> | The inclusive range to clamp within |
input | Number | The number to clamp |
range: The inclusive range to clamp withininput: The number to clampReturns:
| type | description |
|---|---|
Number | The constrained number |
Number: The constrained numberAdded in 0.6.0
No other changes yet.
linearInterpolate : (range: Range<Number>, weight: Number) => Number
Maps a weight between 0 and 1 within the given inclusive range.
Parameters:
| param | type | description |
|---|---|---|
range | Range<Number> | The inclusive range to interpolate within |
weight | Number | The weight to interpolate |
range: The inclusive range to interpolate withinweight: The weight to interpolateReturns:
| type | description |
|---|---|
Number | The blended value |
Number: The blended valueThrows:
InvalidArgument(String)
- When
weightis not between 0 and 1 - When
rangeis not finite - When
rangeincludes NaN
Added in 0.6.0
No other changes yet.
linearMap :
(inputRange: Range<Number>, outputRange: Range<Number>, current: Number) =>
Number
Scales a number from one inclusive range to another inclusive range. If the number is outside the input range, it will be clamped.
Parameters:
| param | type | description |
|---|---|---|
inputRange | Range<Number> | The inclusive range you are mapping from |
outputRange | Range<Number> | The inclusive range you are mapping to |
current | Number | The number to map |
inputRange: The inclusive range you are mapping fromoutputRange: The inclusive range you are mapping tocurrent: The number to mapReturns:
| type | description |
|---|---|
Number | The mapped number |
Number: The mapped numberThrows:
InvalidArgument(String)
- When
inputRangeis not finite - When
inputRangeincludes NaN - When
outputRangeis not finite - When
outputRangeincludes NaN