我使用的是ApacheCassandra3.x版本。关于什么时候应该使用十进制类型还是浮点类型,我有点困惑?什么时候应该使用浮点或避免十进制,反之亦然,有什么具体的用例/区别吗?我已经通过了一些快速教程,但没有一个能涵盖这种差异。有人能帮我理解吗?
dluptydi1#
我的观察结果是,float at max保存小数点后5位的值,超过这个值,它就近似于这个值。例如,如果你有1.00001它将被插入,因为它是,但如果你有1.000001它被插入为1。它是根据精确性来取整的。如果你对mantisa和精度(小数点前有多少位,小数点后有多少位)有清楚的认识,你可以用decimal(float和double的行为方式相同)。
6bc51xsx2#
来自mat brown的《学习Apache·Cassandra》(learning apache cassandra):cassandra有三种存储非整数的类型:这个 float 类型存储32位ieee-754浮点数。这个 double 类型存储64位ieee-754浮点数。这个 decimal 类型存储可变精度的十进制数,大小没有上限。与浮点数不同,可变精度十进制数的小数部分永远不会出现以10为基数的舍入错误。但与其他两个相比,十进制可能会占用更多的空间。所以,如果是精度问题,你可以 decimal . 否则, float / double 在大多数情况下都很好。
float
double
decimal
2条答案
按热度按时间dluptydi1#
我的观察结果是,float at max保存小数点后5位的值,超过这个值,它就近似于这个值。例如,如果你有1.00001它将被插入,因为它是,但如果你有1.000001它被插入为1。它是根据精确性来取整的。如果你对mantisa和精度(小数点前有多少位,小数点后有多少位)有清楚的认识,你可以用decimal(float和double的行为方式相同)。
6bc51xsx2#
来自mat brown的《学习Apache·Cassandra》(learning apache cassandra):
cassandra有三种存储非整数的类型:
这个
float
类型存储32位ieee-754浮点数。这个
double
类型存储64位ieee-754浮点数。这个
decimal
类型存储可变精度的十进制数,大小没有上限。与浮点数不同,可变精度十进制数的小数部分永远不会出现以10为基数的舍入错误。但与其他两个相比,十进制可能会占用更多的空间。所以,如果是精度问题,你可以
decimal
. 否则,float
/double
在大多数情况下都很好。