簡體   English   中英

如何阻止MySQL十進制字段被舍入?

[英]How do I stop a MySQL decimal field from being rounded?

我在MySQL中有一個表,其中包含十進制,長度為9,無符號的字段。 我用它來代價。

在我插入數據並查詢它之后,它全部被舍入並且小數已被刪除。

我很困惑為什么。

疑難解答?


主持人 :web.com

phpMyAdmin版本 :2.11.10.1

MySQL客戶端版本 :5.0.95

MySQL中的十進制類型有兩個調整旋鈕:精度和比例。 您省略了比例,因此默認為0。

文檔( 鏈接

DECIMAL列的聲明語法是DECIMAL(M,D)。 MySQL 5.1中參數的值范圍如下:

M是最大位數(精度)。 它的范圍是1到65.(舊版本的MySQL允許范圍為1到254)。

D是小數點右邊的位數(刻度)。 它的范圍為0到30,且不得大於M.

mysql> create table test01 (field01 decimal(9));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into test01 (field01) values (123.456);
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from test01;
+---------+
| field01 |
+---------+
|     123 |
+---------+
1 row in set (0.00 sec)

mysql> create table test02 (field01 decimal(9, 4));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test02 (field01) values (123.456);
Query OK, 1 row affected (0.01 sec)

mysql> select * from test02;
+----------+
| field01  |
+----------+
| 123.4560 |
+----------+
1 row in set (0.00 sec)

我有同樣的問題。 如果輸入並假設它為0,則PHPMyAdmin忽略小數位。使用alter table query更改它。 ALTER TABLE tablename CHANGE rate rate DECIMAL(30,3)UNSIGNED NOT NULL;

舍入完成,因為您可能已將其數據類型設置為int

將其數據類型更改為doubleFloat

這將幫助你。

編輯

如果你有數據類型decimal給它的大小像這樣編輯。

create table numbers (a decimal(10,2));

舍入正在發生,因為您需要在類型聲明中聲明精度

create table test01 (field01 decimal(9,2));

在PHP / MySQLAdmin中,轉到表格的結構,點擊更改,然后將財務數據(美元)的長度(默認為10,0)設置為10,2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM