【问题标题】:Storing broken numbers in mysql在mysql中存储损坏的数字
【发布时间】:2017-07-08 04:25:37
【问题描述】:

我有一个我想保存的数据库,例如:10.54 作为浮点数或双精度数。

我有一个表,其中有一列名为 temperature,但问题是即使我的插入语句运行良好,当我查询表时,它总是返回一个整数,在上面的示例中为 10。

这些是表格和语句。你能帮忙吗?

表:

CREATE TABLE `data_facts` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `network_asset_code` varchar(255) NOT NULL DEFAULT '',
  `temperature` double(255,0) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=latin1;

可能的查询:

INSERT INTO data_facts (network_asset_code, temperature) VALUES ('abc', 10.5)

一个查询:

mysql> select * from data_facts where data_facts.id=1;
+----+--------------------+-------------+
| id | network_asset_code | temperature |
+----+--------------------+-------------+
|  1 | abc                |          10 |
+----+--------------------+-------------+
1 row in set (0.00 sec)

【问题讨论】:

标签: mysql database jdbc


【解决方案1】:

改变你的温度格式,如果你想要 2 个小数,使用 double(255,2)

CREATE TABLE `data_facts` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `network_asset_code` varchar(255) NOT NULL DEFAULT '',
  `temperature` double(255,2) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=latin1;

【讨论】:

    【解决方案2】:

    将温度数据类型更改为 double(255,2)

    【讨论】:

      【解决方案3】:

      建议使用DECIMAL 而不是DOUBLE 参考hereDECIMAL 可以容纳多少位数请参考here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-31
        • 2016-09-22
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 2013-07-15
        相关资源
        最近更新 更多