Il problema è che il "." nelle espressioni regolari è speciale, significa "qualunque carattere". Non il punto stesso. Se vuoi che rappresenti sé stesso, va fatto l'escape.
Quindi es.
if (xyz.matches("[0-9]+\\.[0-9]"))
Ma questo matches (che è tecnicamente corretto) significa: "uno o più digit, seguito da un punto, seguito da un (1!!) digit". Se vuoi più digit dopo il punto, basta aggiungere il + dopo l'ultima classe di caratteri.