如何在mysql

时间:2018-09-29 10:47:19

标签: mysql database floating-point numbers decimal

我有一个文件,其中包含一些浮点数。它们来自python的process_time()函数。这是我要存储在字段中的值的一个示例,

0.0034867459908127785

我需要按原样存储数字。然后,我想查询该列的MAX。当我将值存储在类型为FLOAT()的列中时,它会四舍五入为0.00348675。然后,当我查询MAX时,我得到:0.0034867459908127785 就我而言,这是不可接受的。我不希望数字有任何变化。

如何按原样存储这些大型浮子?然后查询MAX并获取存储的确切数字?我不希望MYSQL四舍五入。我需要完整的数字。

1 个答案:

答案 0 :(得分:-1)

**First Approch:**

您可以将数据另存为小数,并以max作为:

CREATE TABLE `save_processtime1` (
  `id` INT(11) NOT NULL,
  `point_decimal` DECIMAL(25,20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;


INSERT INTO `save_processtime1` (`id`, `point_decimal`) VALUES('1','0.0034867459008127785');
INSERT INTO `save_processtime1` (`id`, `point_decimal`) VALUES('2','0.0034867459908127785');
INSERT INTO `save_processtime1` (`id`, `point_decimal`) VALUES('3','0.0034867459908127001');
INSERT INTO `save_processtime1` (`id`, `point_decimal`) VALUES('4','0.1000000021200021011');
INSERT INTO `save_processtime1` (`id`, `point_decimal`) VALUES('5','0.0032867459908127785');

mysql>SELECT MAX(point_decimal) FROM save_processtime;
+-----------------------+
| MAX(point_decimal)    |
+-----------------------+
| 0.1000000021200021011 |
+-----------------------+

其他方法:

您可以将此数据保存到表中,该表的字段为 VARCHAR 。并获得最大的领域。

虚拟表结构:

CREATE TABLE `save_processtime` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `point_num` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

insert into `save_processtime` (`id`, `point_num`) values('1','0.0034867459008127785');
insert into `save_processtime` (`id`, `point_num`) values('2','0.0034867459908127785');
insert into `save_processtime` (`id`, `point_num`) values('3','0.0034867459908127001');
insert into `save_processtime` (`id`, `point_num`) values('4','0.1000000021200021011');
insert into `save_processtime` (`id`, `point_num`) values('5','0.0032867459908127785');

最大时间输出:

mysql> SELECT MAX(point_num) FROM save_processtime;
+-----------------------+
| MAX(point_num)        |
+-----------------------+
| 0.1000000021200021011 |
+-----------------------+

希望这就是您想要的!第一种方法比第二种方法好:)