跳至主要內容

19日


19日

后端将Long类型数据传给浏览器,精度丢失

如果后端将 Long 类型的数据传递给浏览器,而且出现了精度丢失的问题,这可能是因为在传输过程中发生了类型转换或数据格式不匹配的情况。

在介质传输过程中,如果数据类型不匹配,就可能导致精度丢失或数据截断。常见的情况包括:

数据类型转换:如果后端将 Long 类型数据转换为 JavaScript 中的 Number 类型传递给浏览器,可能会导致精度丢失。JavaScript 中的 Number 类型采用双精度浮点数表示,对于超过双精度范围的整数会丢失精度。

解决方案

在Long类型字段上使用注解标明序列化方式,代码量不大的情况可以考虑

@JsonSerialize(using = ToStringSerializer.class)
private Long id;

注意

必须是包装类 Long,基本类型 long 不生效

stream对List< Object > 操作的坑

List<Object> os = new ArrayList<>();


os.add("7");

os.stream().map(e -> getInteger(e)).collect(Collectors.toList());

System.out.println(os);

以上代码,发现os中不是 Integer 而是 String

streamforeach 都有这种问题,而 for 却不会

List<Object> os = new ArrayList<>();


os.add("7");

for (int i = 0; i < os.size(); i ++) {
    os.set(i, getInteger(os.get(i)));
}

System.out.println(os);
上次编辑于:
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度