I possibili motivi sono il tipo di cache, denominazione o forzatura
Caching (non applicabile)
Vuoi evitare il costo della creazione di un oggetto durante l'atto di confronto. In Java un esempio sarebbe
BigDecimal zero = new BigDecimal ("0.0");
questo comporta un processo di creazione abbastanza pesante e viene offerto meglio utilizzando il metodo statico fornito:
BigDecimal zero = BigDecimal.ZERO;
Questo consente confronti senza incorrere in costi di creazione ripetuti poiché il BigDecimal viene precaricato dalla JVM durante l'inizializzazione.
Nel caso di ciò che hai descritto, un primitivo sta eseguendo lo stesso lavoro. Questo è ampiamente ridondante in termini di memorizzazione nella cache e prestazioni.
Assegnazione di nomi (improbabile)
Lo sviluppatore originale sta tentando di fornire una convenzione di denominazione uniforme per i valori comuni in tutto il sistema. Questo ha qualche merito, in particolare con valori non comuni, ma qualcosa di fondamentale come zero vale solo per il caso di memorizzazione nella cache precedente.
Tipo forzato (molto probabilmente)
Lo sviluppatore originale sta tentando di forzare un particolare tipo primitivo per garantire che i confronti siano espressi nel loro tipo corretto e possibilmente su una scala particolare (numero di posizioni decimali). Questo è OK, ma il nome semplice "zero" è probabilmente un dettaglio insufficiente per questo caso d'uso, poiché ZERO_1DP è un'espressione più appropriata dell'intenzione.