????
Current Path : C:/opt/pgsql/doc/postgresql/html/ |
Current File : C:/opt/pgsql/doc/postgresql/html/functions-math.html |
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>9.3. Mathematical Functions and Operators</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="functions-comparison.html" title="9.2. Comparison Functions and Operators" /><link rel="next" href="functions-string.html" title="9.4. String Functions and Operators" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">9.3. Mathematical Functions and Operators</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="functions-comparison.html" title="9.2. Comparison Functions and Operators">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="functions.html" title="Chapter 9. Functions and Operators">Up</a></td><th width="60%" align="center">Chapter 9. Functions and Operators</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="functions-string.html" title="9.4. String Functions and Operators">Next</a></td></tr></table><hr /></div><div class="sect1" id="FUNCTIONS-MATH"><div class="titlepage"><div><div><h2 class="title" style="clear: both">9.3. Mathematical Functions and Operators <a href="#FUNCTIONS-MATH" class="id_link">#</a></h2></div></div></div><p> Mathematical operators are provided for many <span class="productname">PostgreSQL</span> types. For types without standard mathematical conventions (e.g., date/time types) we describe the actual behavior in subsequent sections. </p><p> <a class="xref" href="functions-math.html#FUNCTIONS-MATH-OP-TABLE" title="Table 9.4. Mathematical Operators">Table 9.4</a> shows the mathematical operators that are available for the standard numeric types. Unless otherwise noted, operators shown as accepting <em class="replaceable"><code>numeric_type</code></em> are available for all the types <code class="type">smallint</code>, <code class="type">integer</code>, <code class="type">bigint</code>, <code class="type">numeric</code>, <code class="type">real</code>, and <code class="type">double precision</code>. Operators shown as accepting <em class="replaceable"><code>integral_type</code></em> are available for the types <code class="type">smallint</code>, <code class="type">integer</code>, and <code class="type">bigint</code>. Except where noted, each form of an operator returns the same data type as its argument(s). Calls involving multiple argument data types, such as <code class="type">integer</code> <code class="literal">+</code> <code class="type">numeric</code>, are resolved by using the type appearing later in these lists. </p><div class="table" id="FUNCTIONS-MATH-OP-TABLE"><p class="title"><strong>Table 9.4. Mathematical Operators</strong></p><div class="table-contents"><table class="table" summary="Mathematical Operators" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature"> Operator </p> <p> Description </p> <p> Example(s) </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>numeric_type</code></em> <code class="literal">+</code> <em class="replaceable"><code>numeric_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Addition </p> <p> <code class="literal">2 + 3</code> → <code class="returnvalue">5</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="literal">+</code> <em class="replaceable"><code>numeric_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Unary plus (no operation) </p> <p> <code class="literal">+ 3.5</code> → <code class="returnvalue">3.5</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>numeric_type</code></em> <code class="literal">-</code> <em class="replaceable"><code>numeric_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Subtraction </p> <p> <code class="literal">2 - 3</code> → <code class="returnvalue">-1</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="literal">-</code> <em class="replaceable"><code>numeric_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Negation </p> <p> <code class="literal">- (-4)</code> → <code class="returnvalue">4</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>numeric_type</code></em> <code class="literal">*</code> <em class="replaceable"><code>numeric_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Multiplication </p> <p> <code class="literal">2 * 3</code> → <code class="returnvalue">6</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>numeric_type</code></em> <code class="literal">/</code> <em class="replaceable"><code>numeric_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Division (for integral types, division truncates the result towards zero) </p> <p> <code class="literal">5.0 / 2</code> → <code class="returnvalue">2.5000000000000000</code> </p> <p> <code class="literal">5 / 2</code> → <code class="returnvalue">2</code> </p> <p> <code class="literal">(-5) / 2</code> → <code class="returnvalue">-2</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>numeric_type</code></em> <code class="literal">%</code> <em class="replaceable"><code>numeric_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Modulo (remainder); available for <code class="type">smallint</code>, <code class="type">integer</code>, <code class="type">bigint</code>, and <code class="type">numeric</code> </p> <p> <code class="literal">5 % 4</code> → <code class="returnvalue">1</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="type">numeric</code> <code class="literal">^</code> <code class="type">numeric</code> → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="type">double precision</code> <code class="literal">^</code> <code class="type">double precision</code> → <code class="returnvalue">double precision</code> </p> <p> Exponentiation </p> <p> <code class="literal">2 ^ 3</code> → <code class="returnvalue">8</code> </p> <p> Unlike typical mathematical practice, multiple uses of <code class="literal">^</code> will associate left to right by default: </p> <p> <code class="literal">2 ^ 3 ^ 3</code> → <code class="returnvalue">512</code> </p> <p> <code class="literal">2 ^ (3 ^ 3)</code> → <code class="returnvalue">134217728</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="literal">|/</code> <code class="type">double precision</code> → <code class="returnvalue">double precision</code> </p> <p> Square root </p> <p> <code class="literal">|/ 25.0</code> → <code class="returnvalue">5</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="literal">||/</code> <code class="type">double precision</code> → <code class="returnvalue">double precision</code> </p> <p> Cube root </p> <p> <code class="literal">||/ 64.0</code> → <code class="returnvalue">4</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="literal">@</code> <em class="replaceable"><code>numeric_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Absolute value </p> <p> <code class="literal">@ -5.0</code> → <code class="returnvalue">5.0</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>integral_type</code></em> <code class="literal">&</code> <em class="replaceable"><code>integral_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code> </p> <p> Bitwise AND </p> <p> <code class="literal">91 & 15</code> → <code class="returnvalue">11</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>integral_type</code></em> <code class="literal">|</code> <em class="replaceable"><code>integral_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code> </p> <p> Bitwise OR </p> <p> <code class="literal">32 | 3</code> → <code class="returnvalue">35</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>integral_type</code></em> <code class="literal">#</code> <em class="replaceable"><code>integral_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code> </p> <p> Bitwise exclusive OR </p> <p> <code class="literal">17 # 5</code> → <code class="returnvalue">20</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="literal">~</code> <em class="replaceable"><code>integral_type</code></em> → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code> </p> <p> Bitwise NOT </p> <p> <code class="literal">~1</code> → <code class="returnvalue">-2</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>integral_type</code></em> <code class="literal"><<</code> <code class="type">integer</code> → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code> </p> <p> Bitwise shift left </p> <p> <code class="literal">1 << 4</code> → <code class="returnvalue">16</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <em class="replaceable"><code>integral_type</code></em> <code class="literal">>></code> <code class="type">integer</code> → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code> </p> <p> Bitwise shift right </p> <p> <code class="literal">8 >> 2</code> → <code class="returnvalue">2</code> </p></td></tr></tbody></table></div></div><br class="table-break" /><p> <a class="xref" href="functions-math.html#FUNCTIONS-MATH-FUNC-TABLE" title="Table 9.5. Mathematical Functions">Table 9.5</a> shows the available mathematical functions. Many of these functions are provided in multiple forms with different argument types. Except where noted, any given form of a function returns the same data type as its argument(s); cross-type cases are resolved in the same way as explained above for operators. The functions working with <code class="type">double precision</code> data are mostly implemented on top of the host system's C library; accuracy and behavior in boundary cases can therefore vary depending on the host system. </p><div class="table" id="FUNCTIONS-MATH-FUNC-TABLE"><p class="title"><strong>Table 9.5. Mathematical Functions</strong></p><div class="table-contents"><table class="table" summary="Mathematical Functions" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature"> Function </p> <p> Description </p> <p> Example(s) </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.1.1.1.1" class="indexterm"></a> <code class="function">abs</code> ( <em class="replaceable"><code>numeric_type</code></em> ) → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Absolute value </p> <p> <code class="literal">abs(-17.4)</code> → <code class="returnvalue">17.4</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.2.1.1.1" class="indexterm"></a> <code class="function">cbrt</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Cube root </p> <p> <code class="literal">cbrt(64.0)</code> → <code class="returnvalue">4</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.3.1.1.1" class="indexterm"></a> <code class="function">ceil</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">ceil</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Nearest integer greater than or equal to argument </p> <p> <code class="literal">ceil(42.2)</code> → <code class="returnvalue">43</code> </p> <p> <code class="literal">ceil(-42.8)</code> → <code class="returnvalue">-42</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.4.1.1.1" class="indexterm"></a> <code class="function">ceiling</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">ceiling</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Nearest integer greater than or equal to argument (same as <code class="function">ceil</code>) </p> <p> <code class="literal">ceiling(95.3)</code> → <code class="returnvalue">96</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.5.1.1.1" class="indexterm"></a> <code class="function">degrees</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Converts radians to degrees </p> <p> <code class="literal">degrees(0.5)</code> → <code class="returnvalue">28.64788975654116</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.6.1.1.1" class="indexterm"></a> <code class="function">div</code> ( <em class="parameter"><code>y</code></em> <code class="type">numeric</code>, <em class="parameter"><code>x</code></em> <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p> Integer quotient of <em class="parameter"><code>y</code></em>/<em class="parameter"><code>x</code></em> (truncates towards zero) </p> <p> <code class="literal">div(9, 4)</code> → <code class="returnvalue">2</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.7.1.1.1" class="indexterm"></a> <code class="function">erf</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Error function </p> <p> <code class="literal">erf(1.0)</code> → <code class="returnvalue">0.8427007929497149</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.8.1.1.1" class="indexterm"></a> <code class="function">erfc</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Complementary error function (<code class="literal">1 - erf(x)</code>, without loss of precision for large inputs) </p> <p> <code class="literal">erfc(1.0)</code> → <code class="returnvalue">0.15729920705028513</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.9.1.1.1" class="indexterm"></a> <code class="function">exp</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">exp</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Exponential (<code class="literal">e</code> raised to the given power) </p> <p> <code class="literal">exp(1.0)</code> → <code class="returnvalue">2.7182818284590452</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="FUNCTION-FACTORIAL" class="indexterm"></a> <code class="function">factorial</code> ( <code class="type">bigint</code> ) → <code class="returnvalue">numeric</code> </p> <p> Factorial </p> <p> <code class="literal">factorial(5)</code> → <code class="returnvalue">120</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.11.1.1.1" class="indexterm"></a> <code class="function">floor</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">floor</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Nearest integer less than or equal to argument </p> <p> <code class="literal">floor(42.8)</code> → <code class="returnvalue">42</code> </p> <p> <code class="literal">floor(-42.8)</code> → <code class="returnvalue">-43</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.12.1.1.1" class="indexterm"></a> <code class="function">gcd</code> ( <em class="replaceable"><code>numeric_type</code></em>, <em class="replaceable"><code>numeric_type</code></em> ) → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Greatest common divisor (the largest positive number that divides both inputs with no remainder); returns <code class="literal">0</code> if both inputs are zero; available for <code class="type">integer</code>, <code class="type">bigint</code>, and <code class="type">numeric</code> </p> <p> <code class="literal">gcd(1071, 462)</code> → <code class="returnvalue">21</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.13.1.1.1" class="indexterm"></a> <code class="function">lcm</code> ( <em class="replaceable"><code>numeric_type</code></em>, <em class="replaceable"><code>numeric_type</code></em> ) → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Least common multiple (the smallest strictly positive number that is an integral multiple of both inputs); returns <code class="literal">0</code> if either input is zero; available for <code class="type">integer</code>, <code class="type">bigint</code>, and <code class="type">numeric</code> </p> <p> <code class="literal">lcm(1071, 462)</code> → <code class="returnvalue">23562</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.14.1.1.1" class="indexterm"></a> <code class="function">ln</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">ln</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Natural logarithm </p> <p> <code class="literal">ln(2.0)</code> → <code class="returnvalue">0.6931471805599453</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.15.1.1.1" class="indexterm"></a> <code class="function">log</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">log</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Base 10 logarithm </p> <p> <code class="literal">log(100)</code> → <code class="returnvalue">2</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.16.1.1.1" class="indexterm"></a> <code class="function">log10</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">log10</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Base 10 logarithm (same as <code class="function">log</code>) </p> <p> <code class="literal">log10(1000)</code> → <code class="returnvalue">3</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="function">log</code> ( <em class="parameter"><code>b</code></em> <code class="type">numeric</code>, <em class="parameter"><code>x</code></em> <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p> Logarithm of <em class="parameter"><code>x</code></em> to base <em class="parameter"><code>b</code></em> </p> <p> <code class="literal">log(2.0, 64.0)</code> → <code class="returnvalue">6.0000000000000000</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.18.1.1.1" class="indexterm"></a> <code class="function">min_scale</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">integer</code> </p> <p> Minimum scale (number of fractional decimal digits) needed to represent the supplied value precisely </p> <p> <code class="literal">min_scale(8.4100)</code> → <code class="returnvalue">2</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.19.1.1.1" class="indexterm"></a> <code class="function">mod</code> ( <em class="parameter"><code>y</code></em> <em class="replaceable"><code>numeric_type</code></em>, <em class="parameter"><code>x</code></em> <em class="replaceable"><code>numeric_type</code></em> ) → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code> </p> <p> Remainder of <em class="parameter"><code>y</code></em>/<em class="parameter"><code>x</code></em>; available for <code class="type">smallint</code>, <code class="type">integer</code>, <code class="type">bigint</code>, and <code class="type">numeric</code> </p> <p> <code class="literal">mod(9, 4)</code> → <code class="returnvalue">1</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.20.1.1.1" class="indexterm"></a> <code class="function">pi</code> ( ) → <code class="returnvalue">double precision</code> </p> <p> Approximate value of <span class="symbol_font">π</span> </p> <p> <code class="literal">pi()</code> → <code class="returnvalue">3.141592653589793</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.21.1.1.1" class="indexterm"></a> <code class="function">power</code> ( <em class="parameter"><code>a</code></em> <code class="type">numeric</code>, <em class="parameter"><code>b</code></em> <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">power</code> ( <em class="parameter"><code>a</code></em> <code class="type">double precision</code>, <em class="parameter"><code>b</code></em> <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> <em class="parameter"><code>a</code></em> raised to the power of <em class="parameter"><code>b</code></em> </p> <p> <code class="literal">power(9, 3)</code> → <code class="returnvalue">729</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.22.1.1.1" class="indexterm"></a> <code class="function">radians</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Converts degrees to radians </p> <p> <code class="literal">radians(45.0)</code> → <code class="returnvalue">0.7853981633974483</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.23.1.1.1" class="indexterm"></a> <code class="function">round</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">round</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Rounds to nearest integer. For <code class="type">numeric</code>, ties are broken by rounding away from zero. For <code class="type">double precision</code>, the tie-breaking behavior is platform dependent, but <span class="quote">“<span class="quote">round to nearest even</span>”</span> is the most common rule. </p> <p> <code class="literal">round(42.4)</code> → <code class="returnvalue">42</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="function">round</code> ( <em class="parameter"><code>v</code></em> <code class="type">numeric</code>, <em class="parameter"><code>s</code></em> <code class="type">integer</code> ) → <code class="returnvalue">numeric</code> </p> <p> Rounds <em class="parameter"><code>v</code></em> to <em class="parameter"><code>s</code></em> decimal places. Ties are broken by rounding away from zero. </p> <p> <code class="literal">round(42.4382, 2)</code> → <code class="returnvalue">42.44</code> </p> <p> <code class="literal">round(1234.56, -1)</code> → <code class="returnvalue">1230</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.25.1.1.1" class="indexterm"></a> <code class="function">scale</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">integer</code> </p> <p> Scale of the argument (the number of decimal digits in the fractional part) </p> <p> <code class="literal">scale(8.4100)</code> → <code class="returnvalue">4</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.26.1.1.1" class="indexterm"></a> <code class="function">sign</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">sign</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Sign of the argument (-1, 0, or +1) </p> <p> <code class="literal">sign(-8.4)</code> → <code class="returnvalue">-1</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.27.1.1.1" class="indexterm"></a> <code class="function">sqrt</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">sqrt</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Square root </p> <p> <code class="literal">sqrt(2)</code> → <code class="returnvalue">1.4142135623730951</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.28.1.1.1" class="indexterm"></a> <code class="function">trim_scale</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p> Reduces the value's scale (number of fractional decimal digits) by removing trailing zeroes </p> <p> <code class="literal">trim_scale(8.4100)</code> → <code class="returnvalue">8.41</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.29.1.1.1" class="indexterm"></a> <code class="function">trunc</code> ( <code class="type">numeric</code> ) → <code class="returnvalue">numeric</code> </p> <p class="func_signature"> <code class="function">trunc</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Truncates to integer (towards zero) </p> <p> <code class="literal">trunc(42.8)</code> → <code class="returnvalue">42</code> </p> <p> <code class="literal">trunc(-42.8)</code> → <code class="returnvalue">-42</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="function">trunc</code> ( <em class="parameter"><code>v</code></em> <code class="type">numeric</code>, <em class="parameter"><code>s</code></em> <code class="type">integer</code> ) → <code class="returnvalue">numeric</code> </p> <p> Truncates <em class="parameter"><code>v</code></em> to <em class="parameter"><code>s</code></em> decimal places </p> <p> <code class="literal">trunc(42.4382, 2)</code> → <code class="returnvalue">42.43</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.6.2.2.31.1.1.1" class="indexterm"></a> <code class="function">width_bucket</code> ( <em class="parameter"><code>operand</code></em> <code class="type">numeric</code>, <em class="parameter"><code>low</code></em> <code class="type">numeric</code>, <em class="parameter"><code>high</code></em> <code class="type">numeric</code>, <em class="parameter"><code>count</code></em> <code class="type">integer</code> ) → <code class="returnvalue">integer</code> </p> <p class="func_signature"> <code class="function">width_bucket</code> ( <em class="parameter"><code>operand</code></em> <code class="type">double precision</code>, <em class="parameter"><code>low</code></em> <code class="type">double precision</code>, <em class="parameter"><code>high</code></em> <code class="type">double precision</code>, <em class="parameter"><code>count</code></em> <code class="type">integer</code> ) → <code class="returnvalue">integer</code> </p> <p> Returns the number of the bucket in which <em class="parameter"><code>operand</code></em> falls in a histogram having <em class="parameter"><code>count</code></em> equal-width buckets spanning the range <em class="parameter"><code>low</code></em> to <em class="parameter"><code>high</code></em>. Returns <code class="literal">0</code> or <code class="literal"><em class="parameter"><code>count</code></em>+1</code> for an input outside that range. </p> <p> <code class="literal">width_bucket(5.35, 0.024, 10.06, 5)</code> → <code class="returnvalue">3</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <code class="function">width_bucket</code> ( <em class="parameter"><code>operand</code></em> <code class="type">anycompatible</code>, <em class="parameter"><code>thresholds</code></em> <code class="type">anycompatiblearray</code> ) → <code class="returnvalue">integer</code> </p> <p> Returns the number of the bucket in which <em class="parameter"><code>operand</code></em> falls given an array listing the lower bounds of the buckets. Returns <code class="literal">0</code> for an input less than the first lower bound. <em class="parameter"><code>operand</code></em> and the array elements can be of any type having standard comparison operators. The <em class="parameter"><code>thresholds</code></em> array <span class="emphasis"><em>must be sorted</em></span>, smallest first, or unexpected results will be obtained. </p> <p> <code class="literal">width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamptz[])</code> → <code class="returnvalue">2</code> </p></td></tr></tbody></table></div></div><br class="table-break" /><p> <a class="xref" href="functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE" title="Table 9.6. Random Functions">Table 9.6</a> shows functions for generating random numbers. </p><div class="table" id="FUNCTIONS-MATH-RANDOM-TABLE"><p class="title"><strong>Table 9.6. Random Functions</strong></p><div class="table-contents"><table class="table" summary="Random Functions" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature"> Function </p> <p> Description </p> <p> Example(s) </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.8.2.2.1.1.1.1" class="indexterm"></a> <code class="function">random</code> ( ) → <code class="returnvalue">double precision</code> </p> <p> Returns a random value in the range 0.0 <= x < 1.0 </p> <p> <code class="literal">random()</code> → <code class="returnvalue">0.897124072839091</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.8.2.2.2.1.1.1" class="indexterm"></a> <code class="function">random_normal</code> ( [<span class="optional"> <em class="parameter"><code>mean</code></em> <code class="type">double precision</code> [<span class="optional">, <em class="parameter"><code>stddev</code></em> <code class="type">double precision</code> </span>]</span>] ) → <code class="returnvalue">double precision</code> </p> <p> Returns a random value from the normal distribution with the given parameters; <em class="parameter"><code>mean</code></em> defaults to 0.0 and <em class="parameter"><code>stddev</code></em> defaults to 1.0 </p> <p> <code class="literal">random_normal(0.0, 1.0)</code> → <code class="returnvalue">0.051285419</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.8.2.2.3.1.1.1" class="indexterm"></a> <code class="function">setseed</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">void</code> </p> <p> Sets the seed for subsequent <code class="literal">random()</code> and <code class="literal">random_normal()</code> calls; argument must be between -1.0 and 1.0, inclusive </p> <p> <code class="literal">setseed(0.12345)</code> </p></td></tr></tbody></table></div></div><br class="table-break" /><p> The <code class="function">random()</code> function uses a deterministic pseudo-random number generator. It is fast but not suitable for cryptographic applications; see the <a class="xref" href="pgcrypto.html" title="F.28. pgcrypto — cryptographic functions">pgcrypto</a> module for a more secure alternative. If <code class="function">setseed()</code> is called, the series of results of subsequent <code class="function">random()</code> calls in the current session can be repeated by re-issuing <code class="function">setseed()</code> with the same argument. Without any prior <code class="function">setseed()</code> call in the same session, the first <code class="function">random()</code> call obtains a seed from a platform-dependent source of random bits. These remarks hold equally for <code class="function">random_normal()</code>. </p><p> <a class="xref" href="functions-math.html#FUNCTIONS-MATH-TRIG-TABLE" title="Table 9.7. Trigonometric Functions">Table 9.7</a> shows the available trigonometric functions. Each of these functions comes in two variants, one that measures angles in radians and one that measures angles in degrees. </p><div class="table" id="FUNCTIONS-MATH-TRIG-TABLE"><p class="title"><strong>Table 9.7. Trigonometric Functions</strong></p><div class="table-contents"><table class="table" summary="Trigonometric Functions" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature"> Function </p> <p> Description </p> <p> Example(s) </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.1.1.1.1" class="indexterm"></a> <code class="function">acos</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse cosine, result in radians </p> <p> <code class="literal">acos(1)</code> → <code class="returnvalue">0</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.2.1.1.1" class="indexterm"></a> <code class="function">acosd</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse cosine, result in degrees </p> <p> <code class="literal">acosd(0.5)</code> → <code class="returnvalue">60</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.3.1.1.1" class="indexterm"></a> <code class="function">asin</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse sine, result in radians </p> <p> <code class="literal">asin(1)</code> → <code class="returnvalue">1.5707963267948966</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.4.1.1.1" class="indexterm"></a> <code class="function">asind</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse sine, result in degrees </p> <p> <code class="literal">asind(0.5)</code> → <code class="returnvalue">30</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.5.1.1.1" class="indexterm"></a> <code class="function">atan</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse tangent, result in radians </p> <p> <code class="literal">atan(1)</code> → <code class="returnvalue">0.7853981633974483</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.6.1.1.1" class="indexterm"></a> <code class="function">atand</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse tangent, result in degrees </p> <p> <code class="literal">atand(1)</code> → <code class="returnvalue">45</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.7.1.1.1" class="indexterm"></a> <code class="function">atan2</code> ( <em class="parameter"><code>y</code></em> <code class="type">double precision</code>, <em class="parameter"><code>x</code></em> <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse tangent of <em class="parameter"><code>y</code></em>/<em class="parameter"><code>x</code></em>, result in radians </p> <p> <code class="literal">atan2(1, 0)</code> → <code class="returnvalue">1.5707963267948966</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.8.1.1.1" class="indexterm"></a> <code class="function">atan2d</code> ( <em class="parameter"><code>y</code></em> <code class="type">double precision</code>, <em class="parameter"><code>x</code></em> <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse tangent of <em class="parameter"><code>y</code></em>/<em class="parameter"><code>x</code></em>, result in degrees </p> <p> <code class="literal">atan2d(1, 0)</code> → <code class="returnvalue">90</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.9.1.1.1" class="indexterm"></a> <code class="function">cos</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Cosine, argument in radians </p> <p> <code class="literal">cos(0)</code> → <code class="returnvalue">1</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.10.1.1.1" class="indexterm"></a> <code class="function">cosd</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Cosine, argument in degrees </p> <p> <code class="literal">cosd(60)</code> → <code class="returnvalue">0.5</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.11.1.1.1" class="indexterm"></a> <code class="function">cot</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Cotangent, argument in radians </p> <p> <code class="literal">cot(0.5)</code> → <code class="returnvalue">1.830487721712452</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.12.1.1.1" class="indexterm"></a> <code class="function">cotd</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Cotangent, argument in degrees </p> <p> <code class="literal">cotd(45)</code> → <code class="returnvalue">1</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.13.1.1.1" class="indexterm"></a> <code class="function">sin</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Sine, argument in radians </p> <p> <code class="literal">sin(1)</code> → <code class="returnvalue">0.8414709848078965</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.14.1.1.1" class="indexterm"></a> <code class="function">sind</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Sine, argument in degrees </p> <p> <code class="literal">sind(30)</code> → <code class="returnvalue">0.5</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.15.1.1.1" class="indexterm"></a> <code class="function">tan</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Tangent, argument in radians </p> <p> <code class="literal">tan(1)</code> → <code class="returnvalue">1.5574077246549023</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.11.2.2.16.1.1.1" class="indexterm"></a> <code class="function">tand</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Tangent, argument in degrees </p> <p> <code class="literal">tand(45)</code> → <code class="returnvalue">1</code> </p></td></tr></tbody></table></div></div><br class="table-break" /><div class="note"><h3 class="title">Note</h3><p> Another way to work with angles measured in degrees is to use the unit transformation functions <code class="literal"><code class="function">radians()</code></code> and <code class="literal"><code class="function">degrees()</code></code> shown earlier. However, using the degree-based trigonometric functions is preferred, as that way avoids round-off error for special cases such as <code class="literal">sind(30)</code>. </p></div><p> <a class="xref" href="functions-math.html#FUNCTIONS-MATH-HYP-TABLE" title="Table 9.8. Hyperbolic Functions">Table 9.8</a> shows the available hyperbolic functions. </p><div class="table" id="FUNCTIONS-MATH-HYP-TABLE"><p class="title"><strong>Table 9.8. Hyperbolic Functions</strong></p><div class="table-contents"><table class="table" summary="Hyperbolic Functions" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature"> Function </p> <p> Description </p> <p> Example(s) </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.14.2.2.1.1.1.1" class="indexterm"></a> <code class="function">sinh</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Hyperbolic sine </p> <p> <code class="literal">sinh(1)</code> → <code class="returnvalue">1.1752011936438014</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.14.2.2.2.1.1.1" class="indexterm"></a> <code class="function">cosh</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Hyperbolic cosine </p> <p> <code class="literal">cosh(0)</code> → <code class="returnvalue">1</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.14.2.2.3.1.1.1" class="indexterm"></a> <code class="function">tanh</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Hyperbolic tangent </p> <p> <code class="literal">tanh(1)</code> → <code class="returnvalue">0.7615941559557649</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.14.2.2.4.1.1.1" class="indexterm"></a> <code class="function">asinh</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse hyperbolic sine </p> <p> <code class="literal">asinh(1)</code> → <code class="returnvalue">0.881373587019543</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.14.2.2.5.1.1.1" class="indexterm"></a> <code class="function">acosh</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse hyperbolic cosine </p> <p> <code class="literal">acosh(1)</code> → <code class="returnvalue">0</code> </p></td></tr><tr><td class="func_table_entry"><p class="func_signature"> <a id="id-1.5.8.9.14.2.2.6.1.1.1" class="indexterm"></a> <code class="function">atanh</code> ( <code class="type">double precision</code> ) → <code class="returnvalue">double precision</code> </p> <p> Inverse hyperbolic tangent </p> <p> <code class="literal">atanh(0.5)</code> → <code class="returnvalue">0.5493061443340548</code> </p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="functions-comparison.html" title="9.2. Comparison Functions and Operators">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="functions.html" title="Chapter 9. Functions and Operators">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="functions-string.html" title="9.4. String Functions and Operators">Next</a></td></tr><tr><td width="40%" align="left" valign="top">9.2. Comparison Functions and Operators </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 9.4. String Functions and Operators</td></tr></table></div></body></html>