Java中long类型时间戳转Double报类型不匹配错误如何解决?
问题原因
Java不支持直接将基本类型long强制转换为包装类型Double,你当前的写法触发了编译阶段的类型校验规则,因此抛出不兼容类型错误。
正确实现方案
- 方案1:先将
long转为基本类型double,再自动装箱为Double
// 直接一行转换 LTime = (double) handle.getTimestamp().getTime(); // 分步骤写法同理 long time1 = handle.getTimestamp().getTime(); LTime = (double) time1;
- 方案2:使用
Double类的静态方法直接构造对象,写法更清晰
LTime = Double.valueOf(handle.getTimestamp().getTime());
注意事项
double类型仅能精确表示绝对值小于等于2^53的整数值:
- 若你使用的是毫秒级时间戳,当前取值范围在13位以内,远小于
2^53,转换不会出现精度损失 - 若你使用的是纳秒级时间戳,取值超过
2^53时转换会丢失精度,这种场景不建议使用Double存储时间值
内容的提问来源于stack exchange,提问作者Elaine Feng
相关产品推荐
相关产品推荐

