double数据类型计算错误

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】SELECT max(AMMETER),min(AMMETER) , max(AMMETER)-min(AMMETER) FROM HBASE_MACHINE_POWER WHERE MACHINETAG =‘102-3T2-5-4_3901’ and DATATIMEHOUR =str_to_date(‘2023-11-30 19:00:00’, ‘%Y-%m-%d %H:%i:%s’)
结果是 850167.8 850158.6 9.20000000006985
【StarRocks版本】例如:3.0.7 208c9db
建表 SQL

CREATE TABLE HBASE_MACHINE_POWER (

DATACOLLECTTIME datetime NOT NULL COMMENT “”,

MACHINETAG varchar(50) NOT NULL COMMENT “”,

DATATIMEHOUR datetime NOT NULL COMMENT “”,

AMMETER double NOT NULL COMMENT “”

) ENGINE=OLAP

PRIMARY KEY(DATACOLLECTTIME, MACHINETAG)

COMMENT “xxxx”

PARTITION BY RANGE(DATACOLLECTTIME)

(PARTITION p202311 VALUES [(“2023-11-01 00:00:00”), (“2023-12-01 00:00:00”)),

PARTITION p202312 VALUES [(“2023-12-01 00:00:00”), (“2024-01-01 00:00:00”)),

PARTITION p202401 VALUES [(“2024-01-01 00:00:00”), (“2024-02-01 00:00:00”)))

DISTRIBUTED BY HASH(DATACOLLECTTIME, MACHINETAG) BUCKETS 6

PROPERTIES (

“replication_num” = “3”,

“dynamic_partition.enable” = “true”,

“dynamic_partition.time_unit” = “MONTH”,

“dynamic_partition.time_zone” = “Asia/Shanghai”,

“dynamic_partition.start” = “-25”,

“dynamic_partition.end” = “1”,

“dynamic_partition.prefix” = “p”,

“dynamic_partition.buckets” = “32”,

“dynamic_partition.history_partition_num” = “1”,

“dynamic_partition.start_day_of_month” = “1”,

“in_memory” = “false”,

“storage_format” = “DEFAULT”,

“enable_persistent_index” = “false”,

“replicated_storage” = “true”,

“compression” = “LZ4”

);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:39:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850165.1);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:49:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850166.6);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:29:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850163.2);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:54:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850167.2);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:19:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850161.4);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:59:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850167.8);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:14:18’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850160.7);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:24:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850162.3);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:04:16’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850158.6);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:34:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850164.1);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:09:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850159.7);

INSERT INTO ODS.HBASE_MACHINE_POWER

(DATACOLLECTTIME, MACHINETAG, DATATIMEHOUR, AMMETER)

VALUES(‘2023-11-30 19:44:17’, ‘102-3T2-5-4_3901’, ‘2023-11-30 19:00:00’, 850165.8);

hello,你说的计算错误,是和什么数据库比较的?

你正常的值不应该是 9.2吗。

明白,我们先确认一下

这是合理的行为。double 本来就无法保证精度,有的数字就是无法精确用 double 表示的,其他数据库算出来也不是精确的。

那请问,推荐的数据类型是什么,我试了decimal是可以的

浮点数要求精度高就是decimal