El problema del tipo de retorno de la interfaz es List<Long>

demostración de pérdida de datos

Cómo escribir en el controlador

@Operation(summary = "通过标签获取表单id")
    @GetMapping("listIdByTag")
    public Result<List<Long>> listIdByTag(@ModelAttribute Query query) {
    
    
        query.setUserId(contextUtil.getUserid());
        return Result.content(demoService.listIdByTag(query));
    }
实际数据:
[1656187461040214016,1650042689615695872,1656188185293623296]
前端接收到是数据:
[1656187461040214000,1650042689615696000,1656188185293623300]

Es evidente que hay una pérdida de precisión.

La pérdida de precisión es un problema común cuando se trabaja con datos numéricos, especialmente cuando se trabaja con números de punto flotante. Para evitar la pérdida de precisión, se pueden utilizar tipos de cadena en lugar de tipos numéricos al transferir datos entre el front-end y el back-end.

Específicamente, si el tipo de retorno de la interfaz en Spring Boot es List<Long>, se puede convertir a List<String>un tipo y el valor del tipo de cadena se convierte al tipo Long cuando el front-end lo recibe. Por ejemplo, puede usar el método String.valueOf() en Java para convertir el valor del tipo Long al tipo String, y luego usar parseInt() o parseFloat() para convertir el valor del tipo String a Long cuando la interfaz analiza el tipo de matriz JSON.

Además, si necesitas realizar cálculos con números de coma flotante, puedes utilizar clases en Java BigDecimalpara evitar pérdida de precisión. La clase BigDecimal proporciona cálculos numéricos de alta precisión y puede manejar cualquier número de decimales, evitando así problemas de precisión en los cálculos de punto flotante.

Resumir

Cuando se trata de datos numéricos, es necesario seleccionar el tipo de datos y el método de cálculo adecuados según el escenario específico para evitar problemas como la pérdida de precisión.

Supongo que te gusta

Origin blog.csdn.net/zhoqua697/article/details/130638261
Recomendado
Clasificación