mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Re-implement division for numeric values using the traditional "schoolbook"
algorithm. This is a good deal slower than our old roundoff-error-prone code for long inputs, so we keep the old code for use in the transcendental functions, where everything is approximate anyway. Also create a user-accessible function div(numeric, numeric) to provide access to the exact result of trunc(x/y) --- since the regular numeric / operator will round off its result, simply computing that expression in SQL doesn't reliably give the desired answer. This fixes bug #3387 and various related corner cases, and improves the usefulness of PG for high-precision integer arithmetic.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.426 2008/04/04 16:57:21 momjian Exp $ -->
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.427 2008/04/04 18:45:36 tgl Exp $ -->
|
||||
|
||||
<chapter id="functions">
|
||||
<title>Functions and Operators</title>
|
||||
@ -617,6 +617,9 @@
|
||||
<indexterm>
|
||||
<primary>degrees</primary>
|
||||
</indexterm>
|
||||
<indexterm>
|
||||
<primary>div</primary>
|
||||
</indexterm>
|
||||
<indexterm>
|
||||
<primary>exp</primary>
|
||||
</indexterm>
|
||||
@ -717,6 +720,15 @@
|
||||
<entry><literal>28.6478897565412</literal></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal><function>div</function>(<parameter>y</parameter> <type>numeric</>,
|
||||
<parameter>x</parameter> <type>numeric</>)</literal></entry>
|
||||
<entry><type>numeric</></entry>
|
||||
<entry>integer quotient of <parameter>y</parameter>/<parameter>x</parameter></entry>
|
||||
<entry><literal>div(9,4)</literal></entry>
|
||||
<entry><literal>2</literal></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal><function>exp</function>(<type>dp</type> or <type>numeric</type>)</literal></entry>
|
||||
<entry>(same as input)</entry>
|
||||
|
Reference in New Issue
Block a user