float
A floating-point number.
A limited-precision representation of a real number. Typst uses 64 bits to store floats. Wherever a float is expected, you can also pass an integer.
You can convert a value to a float with this type's constructor.
NaN and positive infinity are available as float.nan
and float.inf
respectively.
Example
#3.14 \
#1e4 \
#(10 / 4)
Constructor
If a type has a constructor, you can call it like a function to create a new value of the type.
Converts a value to a float.
- Booleans are converted to
0.0
or1.0
. - Integers are converted to the closest 64-bit float. For integers with
absolute value less than
calc.pow(2, 53)
, this conversion is exact. - Ratios are divided by 100%.
- Strings are parsed in base 10 to the closest 64-bit float. Exponential notation is supported.
#float(false) \
#float(true) \
#float(4) \
#float(40%) \
#float("2.7") \
#float("1e5")
value
The value that should be converted to a float.
Definitions
Functions and types and can have associated definitions. These are accessed by specifying the function or type, followed by a period, and then the definition's name.
is-nan
Checks if a float is not a number.
In IEEE 754, more than one bit pattern represents a NaN. This function
returns true
if the float is any of those bit patterns.
View example
#float.is-nan(0) \
#float.is-nan(1) \
#float.is-nan(float.nan)
is-infinite
Checks if a float is infinite.
Floats can represent positive infinity and negative infinity. This
function returns true
if the float is an infinity.
View example
#float.is-infinite(0) \
#float.is-infinite(1) \
#float.is-infinite(float.inf)
signum
Calculates the sign of a floating point number.
- If the number is positive (including
+0.0
), returns1.0
. - If the number is negative (including
-0.0
), returns-1.0
. - If the number is NaN, returns
float.nan
.
View example
#(5.0).signum() \
#(-5.0).signum() \
#(0.0).signum() \
#float.nan.signum()
from-bytes
Converts bytes to a float.
View example
#float.from-bytes(bytes((0, 0, 0, 0, 0, 0, 240, 63))) \
#float.from-bytes(bytes((63, 240, 0, 0, 0, 0, 0, 0)), endian: "big")
bytes
The bytes that should be converted to a float.
Must be of length exactly 8 so that the result fits into a 64-bit float.
endian
The endianness of the conversion.
-
"big"
Big-endian byte order: The highest-value byte is at the beginning of the bytes.
-
"little"
Little-endian byte order: The lowest-value byte is at the beginning of the bytes.
Default:"little"
to-bytes
Converts a float to bytes.
View example
#array(1.0.to-bytes(endian: "big")) \
#array(1.0.to-bytes())
endian
The endianness of the conversion.
-
"big"
Big-endian byte order: The highest-value byte is at the beginning of the bytes.
-
"little"
Little-endian byte order: The lowest-value byte is at the beginning of the bytes.
Default:"little"