我有一个 double 值数组,其中最后一个值实际上是一个 long 表示时间(以毫秒为单位)。因此,需要将这个 long 转换为 double 以适合数组。稍后在检索此 long 值时,需要将其转换回 long 类型。至关重要的是,从双精度数组中检索后的 long 值与将其放入数组之前的值完全相同(低至一毫秒)。在数组中,不会对 long 值执行任何操作。所以问题是:
我应该简单地将 long 值转换为 double 并在检索时将其转换回 long 吗?这会保留我多头的确切价值吗?
或者我应该使用 Double.longBitsToDouble(time) 方法将 long 放入数组并使用 Double.doubleToLongBits(time) 检索它。
或者也许我应该使用 Double.longBitsToDouble(time) 将 long 值放入数组中,并通过简单地将其转换为 long 类型来检索编码的 long ?
预先感谢您的帮助。
问问题
2406 次
2 回答
5
我的意思是,你应该做的是不使用数组来表示表示不同事物的值......
但是从听起来的情况来看,您别无选择,只能使用Double.longBitsToDouble
,因为 adouble
无法为您提供所有long
值的完全精确度。只是铸造一个long
todouble
会失去精度。
于 2012-06-13T20:06:26.897 回答
3
我将创建一个自定义类,它基本上是一个double
数组和单个long
值的容器。您永远不应使用数组来存储不同类型的数据,或者将数组的某些元素用于不同目的。
使用 a 的示例List<double>
:
public class DoublesWithTimestampStructure
{
private List<double> doubles;
private long timestamp;
public DoublesWithTimestampStructure()
{
this.doubles = new List<double>();
this.timestamp = 0;
}
/*
... getter and setter methods, miscellaneous methods, etc.
*/
}
于 2012-06-13T20:11:16.683 回答