如何在cassandra中存储6位精度的双精度/浮点数/十进制数?

rseugnpd  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(664)

我试图在cassandra表中存储Dataframe的一些字符串。我尝试将cassandra表列定义为float/double/decimal。
但是每个类型只存储2个精度,即8.00005存储为8.00 69.345存储为69.34,Cassandra表有什么问题?为什么它不能保存所有的精确数字。如何解决此问题?如果需要关于这个问题的更多信息,请告诉我。

zpf6vheq

zpf6vheq1#

这个问题似乎与cqlsh的精度设置有关。cassandra正确地存储了这些值,但是当您通过cqlsh查询它时,精度点设置将其舍入。
阅读关于cqlshrc选项关于精度点的更多信息:cqlshrc
以下是默认的cqlshrc设置:

;; The number of digits displayed after the decimal point for single and double 
precision numbers
;; (note that increasing this to large numbers can result in unusual values)
;float_precision = 5

检查以下示例:

create table temp(id int , "val" float ,PRIMARY KEY (id));

insert into temp(id,val) values(1,1.234567);

在设置浮点精度之前选择:

select * from temp;

 id | val
----+---------
 1 | 1.23457

将浮点精度设置为6后选择:

select * from temp;

 id | val
----+----------
 1 | 1.234567

相关问题