在cassandra中何时使用十进制与浮点/双精度?

nmpmafwu  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(425)

我使用的是ApacheCassandra3.x版本。关于什么时候应该使用十进制类型还是浮点类型,我有点困惑?
什么时候应该使用浮点或避免十进制,反之亦然,有什么具体的用例/区别吗?
我已经通过了一些快速教程,但没有一个能涵盖这种差异。有人能帮我理解吗?

dluptydi

dluptydi1#

我的观察结果是,float at max保存小数点后5位的值,超过这个值,它就近似于这个值。例如,如果你有1.00001它将被插入,因为它是,但如果你有1.000001它被插入为1。它是根据精确性来取整的。如果你对mantisa和精度(小数点前有多少位,小数点后有多少位)有清楚的认识,你可以用decimal(float和double的行为方式相同)。

6bc51xsx

6bc51xsx2#

来自mat brown的《学习Apache·Cassandra》(learning apache cassandra):
cassandra有三种存储非整数的类型:
这个 float 类型存储32位ieee-754浮点数。
这个 double 类型存储64位ieee-754浮点数。
这个 decimal 类型存储可变精度的十进制数,大小没有上限。与浮点数不同,可变精度十进制数的小数部分永远不会出现以10为基数的舍入错误。
但与其他两个相比,十进制可能会占用更多的空间。所以,如果是精度问题,你可以 decimal . 否则, float / double 在大多数情况下都很好。

相关问题