数据库bigint类型,用String接收,为什么返回前端数据不一致呢?

问题:
  数据库查一条id(该字段类型是bigint),我后端用String类型来接收,查出来的数据是【1539073448274423810】正确的,但是返回给前端,打印之后id的尾数变了【1539073448274423800】,可以排除是查错数据的问题,因为数据库就一条符合的数据。我想请问一下,这是什么原因造成的呢?是精度丢失吗?那在controller层的时候数据还是准确的,为什么到了前端数据就不一致了呢?

数据库

img


img

后端—mapper

img

后端—serviceImpl

img

后端—controller

img

前端—请求前请求后未做特殊处理操作

img


img

前端—浏览器打印的结果【数据尾数改变了,是精度丢失吗?那在controller层的时候数据还是准确的,为什么到了前端数据就不一致了呢?】

img

是精度丢了 在返回给前端前就要把他先转为 string。 你要在network看到后端返回的是字符串的 "1539073448274423810" 就对了

我也复现了,不是后台的问题,我看到返回前端都是对的,但是展示错误了,如下图:

img

img

我在浏览器看了下最大的数字,这里可能只保证位数对应上的,后面的800或者810没法保证了,所以你做展示的时候需要强转为字符串才行,不能直接打印

img