Packages
gleam_stdlib
0.10.1
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
src/gleam/float.gleam
import gleam/string_builder
import gleam/order.{Order}
pub type Float =
Float
/// Attempts to parse a string as a float, returning `Error(Nil)` if it was not
/// possible.
///
/// ## Examples
/// > parse("2.3")
/// Some(2.3)
///
/// > parse("ABC")
/// None
///
pub external fn parse(String) -> Result(Float, Nil) =
"gleam_stdlib" "parse_float"
/// Return the string representation of the provided float.
///
/// ## Examples
/// > to_string(2.3)
/// "2.3"
///
pub fn to_string(f: Float) -> String {
f
|> string_builder.from_float
|> string_builder.to_string
}
/// Compares two floats, returning an order.
///
/// ## Examples
/// > compare(2.0, 2.3)
/// Lt
///
pub fn compare(a: Float, with b: Float) -> Order {
case a == b {
True -> order.Eq
False -> case a <. b {
True -> order.Lt
False -> order.Gt
}
}
}
/// Compares two floats, returning the smaller of the two.
///
/// ## Examples
///
/// > min(2.0, 2.3)
/// 2.0
///
pub fn min(a: Float, b: Float) -> Float {
case a <. b {
True -> a
False -> b
}
}
/// Compares two floats, returning the larger of the two.
///
/// ## Examples
///
/// > max(2.0, 2.3)
/// 2.3
///
pub fn max(a: Float, b: Float) -> Float {
case a >. b {
True -> a
False -> b
}
}
/// Rounds the value to the next highest whole number as a float.
///
/// ## Examples
///
/// > ceiling(2.3)
/// 3.0
///
pub external fn ceiling(Float) -> Float =
"math" "ceil"
/// Rounds the value to the next lowest whole number as a float.
///
/// ## Examples
///
/// > floor(2.3)
/// 2.0
///
pub external fn floor(Float) -> Float =
"math" "floor"
/// Rounds the value to the nearest whole number as an int.
///
/// ## Examples
///
/// > round(2.3)
/// 2
///
/// > round(2.5)
/// 3
///
pub external fn round(Float) -> Int =
"erlang" "round"
/// Returns the value as an int, truncating all decimal digits.
///
/// ## Examples
///
/// > truncate(2.4343434847383438)
/// 2
///
pub external fn truncate(Float) -> Int =
"erlang" "trunc"