Browse Source

Fixed #29823 -- Doc'd limitation of DecimalField on SQLite.

Claude Paroz 5 years ago
parent
commit
b8dff52f44
2 changed files with 15 additions and 1 deletions
  1. 12 0
      docs/ref/databases.txt
  2. 3 1
      docs/ref/models/fields.txt

+ 12 - 0
docs/ref/databases.txt

@@ -677,6 +677,18 @@ substring filtering.
 
 .. _documented at sqlite.org: https://www.sqlite.org/faq.html#q18
 
+.. _sqlite-decimal-handling:
+
+Decimal handling
+----------------
+
+SQLite has no real decimal internal type. Decimal values are internally
+converted to the ``REAL`` data type (8-byte IEEE floating point number), as
+explained in the `SQLite datatypes documentation`__, so they don't support
+correctly-rounded decimal floating point arithmetic.
+
+__ https://www.sqlite.org/datatype3.html#storage_classes_and_datatypes
+
 "Database is locked" errors
 ---------------------------
 

+ 3 - 1
docs/ref/models/fields.txt

@@ -715,7 +715,9 @@ when :attr:`~django.forms.Field.localize` is ``False`` or
 
     For more information about the differences between the
     :class:`FloatField` and :class:`DecimalField` classes, please
-    see :ref:`FloatField vs. DecimalField <floatfield_vs_decimalfield>`.
+    see :ref:`FloatField vs. DecimalField <floatfield_vs_decimalfield>`. You
+    should also be aware of :ref:`SQLite limitations <sqlite-decimal-handling>`
+    of decimal fields.
 
 ``DurationField``
 -----------------