{"route":"/en-US-v0.14.1/reference/foundations/float/","title":"Float","description":"Documentation for the Float type.","part":null,"outline":[{"id":"summary","name":"Summary","children":[]},{"id":"example","name":"Example","children":[]},{"id":"constructor","name":"Constructor","children":[{"id":"constructor-value","name":"value","children":[]}]},{"id":"definitions","name":"Definitions","children":[{"id":"definitions-is-nan","name":"Is Nan","children":[]},{"id":"definitions-is-infinite","name":"Is Infinite","children":[]},{"id":"definitions-signum","name":"Signum","children":[]},{"id":"definitions-from-bytes","name":"From Bytes","children":[{"id":"definitions-from-bytes-bytes","name":"bytes","children":[]},{"id":"definitions-from-bytes-endian","name":"endian","children":[]}]},{"id":"definitions-to-bytes","name":"To Bytes","children":[{"id":"definitions-to-bytes-endian","name":"endian","children":[]},{"id":"definitions-to-bytes-size","name":"size","children":[]}]}]}],"body":{"kind":"type","content":{"name":"float","title":"Float","keywords":[],"oneliner":"A floating-point number.","details":"<p>A floating-point number.</p>\n<p>A limited-precision representation of a real number. Typst uses 64 bits to\nstore floats. Wherever a float is expected, you can also pass an\n<a href=\"/en-US-v0.14.1/reference/foundations/int/\">integer</a>.</p>\n<p>You can convert a value to a float with this type's constructor.</p>\n<p>NaN and positive infinity are available as <code>float<span class=\"typ-punct\">.</span>nan</code> and <code>float<span class=\"typ-punct\">.</span>inf</code>\nrespectively.</p>\n<h2 id=\"example\">Example</h2>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-num\">#</span><span class=\"typ-num\">3.14</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-num\">#</span><span class=\"typ-num\">1e4</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-punct\">#</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">10</span> <span class=\"typ-op\">/</span> <span class=\"typ-num\">4</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/3a1ecfc8f2a14871dcc151f80926f42b.png\" alt=\"Preview\"></div></div>","constructor":{"path":[],"name":"float","title":"Construct","keywords":[],"oneliner":"Converts a value to a float.","element":false,"contextual":false,"deprecationMessage":null,"deprecationUntil":null,"details":[{"kind":"html","content":"<p>Converts a value to a float.</p>\n<ul>\n<li>Booleans are converted to <code>0.0</code> or <code>1.0</code>.</li>\n<li>Integers are converted to the closest 64-bit float. For integers with\nabsolute value less than <code>calc<span class=\"typ-punct\">.</span><span class=\"typ-func\">pow</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">2</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">53</span><span class=\"typ-punct\">)</span></code>, this conversion is\nexact.</li>\n<li>Ratios are divided by 100%.</li>\n<li>Strings are parsed in base 10 to the closest 64-bit float. Exponential\nnotation is supported.</li>\n</ul>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-func\">#</span><span class=\"typ-func\">float</span><span class=\"typ-punct\">(</span><span class=\"typ-key\">false</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">float</span><span class=\"typ-punct\">(</span><span class=\"typ-key\">true</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">float</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">4</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">float</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">40%</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">float</span><span class=\"typ-punct\">(</span><span class=\"typ-str\">&quot;2.7&quot;</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">float</span><span class=\"typ-punct\">(</span><span class=\"typ-str\">&quot;1e5&quot;</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/3cc6be1ea65a2f8fbe14dff52343876a.png\" alt=\"Preview\"></div></div>","title":null}}],"self":false,"params":[{"name":"value","details":[{"kind":"html","content":"<p>The value that should be converted to a float.</p>"}],"types":["bool","int","float","ratio","str","decimal"],"strings":[],"default":null,"positional":true,"named":false,"required":true,"variadic":false,"settable":false}],"returns":["float"],"scope":[]},"scope":[{"path":["float"],"name":"is-nan","title":"Is Nan","keywords":[],"oneliner":"Checks if a float is not a number.","element":false,"contextual":false,"deprecationMessage":null,"deprecationUntil":null,"details":[{"kind":"html","content":"<p>Checks if a float is not a number.</p>\n<p>In IEEE 754, more than one bit pattern represents a NaN. This function\nreturns <code>true</code> if the float is any of those bit patterns.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">is-nan</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">0</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">is-nan</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">1</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">is-nan</span><span class=\"typ-punct\">(</span>float<span class=\"typ-punct\">.</span>nan<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/f6377c8713dcba71fb09d0925d677577.png\" alt=\"Preview\"></div></div>","title":null}}],"self":true,"params":[],"returns":["bool"],"scope":[]},{"path":["float"],"name":"is-infinite","title":"Is Infinite","keywords":[],"oneliner":"Checks if a float is infinite.","element":false,"contextual":false,"deprecationMessage":null,"deprecationUntil":null,"details":[{"kind":"html","content":"<p>Checks if a float is infinite.</p>\n<p>Floats can represent positive infinity and negative infinity. This\nfunction returns <code><span class=\"typ-key\">true</span></code> if the float is an infinity.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">is-infinite</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">0</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">is-infinite</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">1</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">is-infinite</span><span class=\"typ-punct\">(</span>float<span class=\"typ-punct\">.</span>inf<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/8a0a86fa68abec5eb9e8923c3f4eee.png\" alt=\"Preview\"></div></div>","title":null}}],"self":true,"params":[],"returns":["bool"],"scope":[]},{"path":["float"],"name":"signum","title":"Signum","keywords":[],"oneliner":"Calculates the sign of a floating point number.","element":false,"contextual":false,"deprecationMessage":null,"deprecationUntil":null,"details":[{"kind":"html","content":"<p>Calculates the sign of a floating point number.</p>\n<ul>\n<li>If the number is positive (including <code><span class=\"typ-op\">+</span><span class=\"typ-num\">0.0</span></code>), returns <code><span class=\"typ-num\">1.0</span></code>.</li>\n<li>If the number is negative (including <code><span class=\"typ-op\">-</span><span class=\"typ-num\">0.0</span></code>), returns <code><span class=\"typ-op\">-</span><span class=\"typ-num\">1.0</span></code>.</li>\n<li>If the number is NaN, returns <code>float<span class=\"typ-punct\">.</span>nan</code>.</li>\n</ul>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-punct\">#</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">5.0</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">signum</span><span class=\"typ-punct\">(</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-punct\">#</span><span class=\"typ-punct\">(</span><span class=\"typ-op\">-</span><span class=\"typ-num\">5.0</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">signum</span><span class=\"typ-punct\">(</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-punct\">#</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">0.0</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">signum</span><span class=\"typ-punct\">(</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-pol\">nan</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">signum</span><span class=\"typ-punct\">(</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/1c7a7ea657572682dba8012c83fda699.png\" alt=\"Preview\"></div></div>","title":null}}],"self":true,"params":[],"returns":["float"],"scope":[]},{"path":["float"],"name":"from-bytes","title":"From Bytes","keywords":[],"oneliner":"Interprets bytes as a float.","element":false,"contextual":false,"deprecationMessage":null,"deprecationUntil":null,"details":[{"kind":"html","content":"<p>Interprets bytes as a float.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">from-bytes</span><span class=\"typ-punct\">(</span><span class=\"typ-func\">bytes</span><span class=\"typ-punct\">(</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">240</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">63</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-pol\">#</span><span class=\"typ-pol\">float</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">from-bytes</span><span class=\"typ-punct\">(</span><span class=\"typ-func\">bytes</span><span class=\"typ-punct\">(</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">63</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">240</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span> endian<span class=\"typ-punct\">:</span> <span class=\"typ-str\">&quot;big&quot;</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/4db0a29eaaeeef524a3a6ef790e25877.png\" alt=\"Preview\"></div></div>","title":null}}],"self":false,"params":[{"name":"bytes","details":[{"kind":"html","content":"<p>The bytes that should be converted to a float.</p>\n<p>Must have a length of either 4 or 8. The bytes are then\ninterpreted in <a href=\"https://en.wikipedia.org/wiki/IEEE_754\">IEEE 754</a>'s\nbinary32 (single-precision) or binary64 (double-precision) format\ndepending on the length of the bytes.</p>"}],"types":["bytes"],"strings":[],"default":null,"positional":true,"named":false,"required":true,"variadic":false,"settable":false},{"name":"endian","details":[{"kind":"html","content":"<p>The endianness of the conversion.</p>"}],"types":["str"],"strings":[{"string":"big","details":"<p>Big-endian byte order: The highest-value byte is at the beginning of the\nbytes.</p>"},{"string":"little","details":"<p>Little-endian byte order: The lowest-value byte is at the beginning of\nthe bytes.</p>"}],"default":"<code><span class=\"typ-str\">&quot;little&quot;</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":false}],"returns":["float"],"scope":[]},{"path":["float"],"name":"to-bytes","title":"To Bytes","keywords":[],"oneliner":"Converts a float to bytes.","element":false,"contextual":false,"deprecationMessage":null,"deprecationUntil":null,"details":[{"kind":"html","content":"<p>Converts a float to bytes.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-func\">#</span><span class=\"typ-func\">array</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">1.0</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">to-bytes</span><span class=\"typ-punct\">(</span>endian<span class=\"typ-punct\">:</span> <span class=\"typ-str\">&quot;big&quot;</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span> <span class=\"typ-escape\">\\</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">array</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">1.0</span><span class=\"typ-punct\">.</span><span class=\"typ-func\">to-bytes</span><span class=\"typ-punct\">(</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/a32cf9d2d1c83a84118ffe5633a2486c.png\" alt=\"Preview\"></div></div>","title":null}}],"self":true,"params":[{"name":"endian","details":[{"kind":"html","content":"<p>The endianness of the conversion.</p>"}],"types":["str"],"strings":[{"string":"big","details":"<p>Big-endian byte order: The highest-value byte is at the beginning of the\nbytes.</p>"},{"string":"little","details":"<p>Little-endian byte order: The lowest-value byte is at the beginning of\nthe bytes.</p>"}],"default":"<code><span class=\"typ-str\">&quot;little&quot;</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":false},{"name":"size","details":[{"kind":"html","content":"<p>The size of the resulting bytes.</p>\n<p>This must be either 4 or 8. The call will return the\nrepresentation of this float in either\n<a href=\"https://en.wikipedia.org/wiki/IEEE_754\">IEEE 754</a>'s binary32\n(single-precision) or binary64 (double-precision) format\ndepending on the provided size.</p>"}],"types":["int"],"strings":[],"default":"<code><span class=\"typ-num\">8</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":false}],"returns":["bytes"],"scope":[]}]}}}