Astyanax Cassandra 双精度浮点数精度问题

6

我正在尝试从一个具有双精度类型列的Cassandra表中获取Double值。我使用CQL3语法创建了该表:

CREATE TABLE data_double (
    datetime timestamp,
    value double,
    primary key (datetime)
    );

我插入了一行:

INSERT INTO data_double (datetime,  value) VALUES ('111111111', 123.456);  

当我执行以下操作时:

SELECT * from data_double;

我理解这个数值为123.46

为什么这个数值被四舍五入了呢?

谢谢

1个回答

11

cqlsh 工具默认只会显示浮点数的五位小数。

您可以通过创建一个类似以下内容的 cqlshrc 文件来增加显示精度:

[ui]
float_precision = 10

Cqlsh文档页面提供了有关可用选项的更多详细信息。

更新:Cassandra在某个时候更改了cqlshrc文件的位置。 新的默认位置是~/.cassandra/cqlshrc。 您也可以使用不同位置的文件,使用--cqlshrc命令行选项。


你确定是 .cqlshrc 吗?DataStax 在这里 https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshUsingCqlshrc.html?hl=cqlshrc 中称其为 cqlshrc - simo
@simo 感谢您指出这一点;位置确实在某个地方发生了变化,因此我已经编辑了我的答案以更清晰明了。 - BrianC
所以在select语句中没有办法做到这一点吗? - The other other Alan
1
@AFischbein 不,没有其他方法;我只知道cqlshrc文件是唯一的途径。请记住这只是cqlsh shell的行为;当您使用自己的应用程序运行时,驱动程序将返回所有浮点值的完整精度。 - BrianC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接