Los posibles motivos son el almacenamiento en caché, la asignación de nombres o el tipo de restricción
Almacenamiento en caché (no aplicable)
Desea evitar el costo de crear un objeto durante el acto de comparación. En Java un ejemplo sería
BigDecimal zero = new BigDecimal ("0.0");
esto implica un proceso de creación bastante pesado y se sirve mejor utilizando el método estático proporcionado:
BigDecimal zero = BigDecimal.ZERO;
Esto permite comparaciones sin incurrir en un costo repetido de creación, ya que la JVM precede en caché a BigDecimal durante la inicialización.
En el caso de lo que ha descrito, una primitiva está realizando el mismo trabajo. Esto es en gran medida redundante en términos de almacenamiento en caché y rendimiento.
Nombres (poco probable)
El desarrollador original está tratando de proporcionar una convención de nomenclatura uniforme para los valores comunes en todo el sistema. Esto tiene algún mérito, especialmente con valores poco comunes, pero algo tan básico como cero solo vale la pena en el caso del caso de almacenamiento en caché anterior.
Tipo de forzamiento (más probable)
El desarrollador original está intentando forzar un tipo primitivo particular para garantizar que las comparaciones se conviertan a su tipo correcto y posiblemente a una escala particular (número de lugares decimales). Esto está bien, pero el nombre simple "cero" probablemente no sea suficiente para este caso de uso, ya que ZERO_1DP es una expresión más apropiada de la intención.