BeanIO: Formato de número con longitud fija para enteros y decimales sin separador.
¿Hay alguna manera de dar formato a un número con longitud fija agregando separador utilizando la Anotación? Siempre recibo 10 posiciones enteras y dos decimales, obteniendo una longitud fija de 12.
El campo de anotación que uso es:
@Field(at=576, length=12, format="###.##")
private BigDecimal impTotal;
Aquí hay un ejemplo:
Recibido: 00000000000150
Valor esperado: 1.50
Estoy usando esto para resolverlo, pero creo que podría ralentizar el proceso:
public BigDecimal getImpTotal() {
return impTotal.divide(new BigDecimal(100));
}
davy.ai
Sí, es posible dar formato a un número con longitud fija añadiendo separadores usando anotaciones en Java. Un ejemplo de cómo hacerlo es utilizando la anotación
@DecimalMin
con el parámetrovalue
establecido en el valor mínimo permitido y el parámetromessage
establecido en el formato deseado para el número. Para el caso específico de una longitud fija de 12 con 10 posiciones enteras y 2 posiciones decimales, se podría utilizar la siguiente anotación:Esto asegurará que el valor de
impTotal
debe ser al menos 0.01 y se mostrará como una cadena de longitud fija con 10 posiciones enteras y 2 posiciones decimales, con ceros a la izquierda si es necesario.Como alternativa, se podría seguir utilizando la anotación
@Field
conformat="###.##"
, pero modificar el métodogetImpTotal()
para multiplicar el valor por 100 antes de devolverlo:Esto también asegurará que el valor se muestre con 10 posiciones enteras y 2 posiciones decimales, con una longitud fija de 12, pero requerirá multiplicar y dividir el valor por 100.