如果5和5.00和5.000都是不同的,那麼爲什麼Django的小數場保存而不.00甚至當我有decimal_places = 2的Python/Django的:如果5和5.00不同的值(以十進制數表示時),然後
?
更重要的是,我怎麼能在Django值5.00另存爲5.00,而無需使用字符串。
如果5和5.00和5.000都是不同的,那麼爲什麼Django的小數場保存而不.00甚至當我有decimal_places = 2的Python/Django的:如果5和5.00不同的值(以十進制數表示時),然後
?
更重要的是,我怎麼能在Django值5.00另存爲5.00,而無需使用字符串。
我認爲這將是更正確的說,那些是不同代表處的相同值的「5」。
在內部,保存(除非你實際上存儲字符串)的值是5。
當顯示值,即轉換爲屏幕的字符串表示,它可能被示出爲5,5.00或5.000但在內部,它仍然是5
的兩位小數不會出現(如果我可以這樣說),直到值輸出。
您無法保存2位小數除非你使用一個字符串的數字。
您也可以將「100×值」保存爲int – 2010-01-06 21:54:50
你有一種觀點認爲應該的Django執行它的Python對象有一定的精度,但decimal_places
可能是更多的最大精度。我相信精度不會存儲在數據庫中,所以在任何情況下都會丟失。
在任何情況下,如果要強制執行精確,使用類似:Decimal(5).quantize(Decimal(10)**-DECIMAL_PLACES)
您可以在自定義django.db.models.DecimalField
重載to_python
方法,以確保返回與正確的精度的蟒蛇小數對象。
哪個數據庫引擎? SQLite是一個特例。所有的SQLite值都是字符串。 – 2010-01-07 01:38:46