Non-integer
Synopsis
Use the non-integer (floating-point and fixed-point) data types to specify non-integer numbers. Different floating point data types represent different precision numbers.
| Data type | Description | Decimal precision | 
|---|---|---|
| FLOAT | Inexact 32-bit floating point number | 7 | 
| DOUBLE | Inexact 64-bit floating point number | 15 | 
| DECIMAL | Arbitrary-precision number | no upper-bound | 
Syntax
type_specification ::= { FLOAT | DOUBLE | DOUBLE PRECISION | DECIMAL }
non_integer_floating_point_literal ::= non_integer_fixed_point_literal | "NaN" | "Infinity" | "-Infinity"
non_integer_fixed_point_literal ::= [ + | - ] { digit [ digit ...] '.' [ digit ...] | '.' digit [ digit ...] }
Where
- Columns of type FLOAT,DOUBLE,DOUBLE PRECISION, orDECIMALcan be part of thePRIMARY KEY.
- DOUBLEand- DOUBLE PRECISIONare aliases.
- non_integer_floating_point_literalis used for values of- FLOAT,- DOUBLEand- DOUBLE PRECISIONtypes.
- non_integer_fixed_point_literalis used for values of- DECIMALtype.
Semantics
- Values of different floating-point and fixed-point data types are comparable and convertible to one another.
- Conversion from floating-point types into DECIMALwill raise an error for the special valuesNaN,Infinity, and-Infinity.
 
- Conversion from floating-point types into 
- Values of non-integer numeric data types are neither comparable nor convertible to integer although integers are convertible to them.
- The ordering for special floating-point values is defined as (in ascending order): -Infinity, all negative values in order, all positive values in order,Infinity, andNaN.
Examples
ycqlsh:example> CREATE TABLE sensor_data (sensor_id INT PRIMARY KEY, float_val FLOAT, dbl_val DOUBLE, dec_val DECIMAL);
ycqlsh:example> INSERT INTO sensor_data(sensor_id, float_val, dbl_val, dec_val) 
                  VALUES (1, 321.0456789, 321.0456789, 321.0456789);
Integers literals can also be used (Using upsert semantics to update a non-existent row).
ycqlsh:example> UPDATE sensor_data SET float_val = 1, dbl_val = 1, dec_val = 1 WHERE sensor_id = 2;
ycqlsh:example> SELECT * FROM sensor_data;
 sensor_id | float_val | dbl_val   | dec_val
-----------+-----------+-----------+-------------
         2 |         1 |         1 |           1
         1 | 321.04568 | 321.04568 | 321.0456789