The string representation of a double, str, is decoded to its original Double representation and then truncated to a certain number of significant digits to remain consistent with the lexiEncode function.
The double, number, is truncated to a certain number of significant digits and then lexiEncoded into a string representations.
In these lexiEncode and -Decode functions, a double is encoded or decoded into a lexical representation to be used in the rowID in the Accumulo key.
In the lexiEncodeDoubleToString function, the double is truncated via floor() to four significant digits, giving a scientific notation of #.###E0. This is to ensure that there is flexibility in the precision of the bounding box given when querying for chunks. Prior to rounding the resolution, it was found that even that slightest change in bounding box caused the resolution to be calculated differently many digits after the decimal point, leading to a different lexical representation of the resolution. This meant that no chunks would be returned out of Accumulo, since they did not match the resolution calculated upon ingest.
Now, there is greater flexibility in specifying a bounding box and calculating a resolution because we save only four digits after the decimal point.