我有一个文件,其中包含一些浮点数。它们来自python的process_time()函数。这是我要存储在字段中的值的一个示例,
0.0034867459908127785
我需要按原样存储数字。然后,我想查询该列的MAX
。当我将值存储在类型为FLOAT()
的列中时,它会四舍五入为0.00348675
。然后,当我查询MAX时,我得到:0.0034867459908127785
就我而言,这是不可接受的。我不希望数字有任何变化。
如何按原样存储这些大型浮子?然后查询MAX并获取存储的确切数字?我不希望MYSQL四舍五入。我需要完整的数字。
答案 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 |
+-----------------------+
希望这就是您想要的!第一种方法比第二种方法好:)