我使用的是SQLite,我有一堆欄位,代表以毫米為單位的測量值,我想將其限制在小數點后的1個數字(例如:1.2 ;12.2 ;122.2等等)。
我見過這樣的事情,例如把DECIMAL(n,1)作為型別,我試過了,但它似乎沒有約束值(我想這是因為它不是一個實際的SQLite型別)。
我是否需要遷移到MySQL才能作業?
uj5u.com熱心網友回復:
你可以使用的ROUND函式制作一個CHECK約束條件。 將該列宣告為:
mm REAL CHECK(mm = ROUND(mm, 1)
但要注意的是,底層表示仍然是一個二進制浮點數,并有關于準確性的通常注意事項。
uj5u.com熱心網友回復:
MySQL的DECIMAL(nn,1)將四舍五入到小數點后1位用于存盤。 這與約束條件不同。
當顯示資料時,您的應用程式應將結果四舍五入到一個有意義的精度。 (對于天氣讀數來說,小數點后一位可以說是過份的。)
一般來說,測量(即:測量結果)應該是一個有意義的精度。
一般來說,測量值(而非貨幣)應存盤在FLOAT中。 這種資料型別(在MySQL和許多其他產品中)提供了7個 "有效數字 "和一個合理的高范圍的值。
FLOAT在用于經緯度時有足夠的精度來區分兩輛車,但沒有足夠的精度來區分兩個相擁的人。
(抱歉,我不能為SQLite說話。 如果FLOAT是可用的,那么我建議你使用它并在output上取整。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/321935.html
標籤:
