我什么时候应该使用 Double.longBitsToDouble(...) 而不是简单地将 long 转换为 double?

Jar*_*ski 2 java casting type-conversion primitive-types

我有一个 double 值数组,其中最后一个值实际上是一个很长的表示时间(以毫秒为单位)。因此,这个 long 需要转换为 double 以适应数组。稍后在检索此 long 值时,需要将其转换回 long 类型。至关重要的是,从双精度数组中检索后的 long 值与我在将其放入数组之前的值完全相同(低至一毫秒)。不会对数组中的 long 值执行任何操作。所以问题是:
我应该简单地将 long 值转换为 double 并在检索时将其转换回 long 吗?这会保留我的多头的确切价值吗?
或者我应该使用 Double.longBitsToDouble(time) 方法将 long 放入数组并使用 Double.doubleToLongBits(time) 检索它。
或者我应该使用 Double.longBitsToDouble(time) 将 long 值放入数组中并通过简单地将其转换为 long 类型来检索编码的 long ?
预先感谢您的帮助。

Lou*_*man 5

我的意思是,你应该做的是不要使用数组来表示不同事物的值......

但是从它听起来的样子来看,您别无选择,只能使用Double.longBitsToDouble,因为 adouble无法为您提供所有long值的完全精确度。只是铸造一个longtodouble会失去精度。