【发布时间】:2012-01-13 00:50:16
【问题描述】:
在我的应用程序中,我将使用浮点值来存储地理坐标(纬度和经度)。
我知道这些值的整数部分将分别在[-90, 90] 和[-180, 180] 范围内。我还需要对这些值强制执行一些固定的精度(现在它是0.00001,但以后可以更改)。
在研究了单精度浮点类型 (float) 之后,我可以看到包含我的值有点小。这是因为180 * 10^5 大于2^24(float 有效数字的大小)但小于2^25。
所以我必须使用双精度。但问题是我要存储大量的这些值,所以我不想浪费字节,存储不必要的精度。
那么,当我将双精度值(具有固定整数部分范围和指定精度 X)转换为 java 中的字节数组时,如何执行某种压缩?因此,例如,如果我使用示例中的精度 (0.00001),我最终会得到每个值 5 个字节。
我正在寻找一种轻量级的算法或解决方案,这样它就不会涉及大量的计算。
【问题讨论】:
-
压缩数据后,您仍然可以使用压缩,例如GZIPOutputStream 可能会再次变小。
-
@PeterLawrey 对于大小合适的数组应该非常有用。我认为您的建议与 Aaron 的建议有一些共同点——它们都利用了存储值将彼此接近的事实。
标签: java compression floating-point