Secondo me se metti il maggiore o uguale ( >= ) al posto del minore o uguale ( <= ) tutto funziona meglio.

Ti spiego: prova a simulare mentalmente l'esecuzione del codice:

Poniamo $voto=0.0

0.0<0.5? SI --- $scala = '1'
0.0<=0.5? SI --- $scala = '2' (tra l'altro questo controllo è più o meno identico al precedente)
0.0<=1.0? SI --- $scala = '3'
...
...
0.0<=9.0? SI --- $scala = '18'
0.0<=9.5? SI --- $scala = '19'
0.0>10.0? SI --- $scala = '20'

Quindi $scala = '20'!!! Ovvio che è sbagliato

Proviamo con il maggiore o uguale:

Poniamo $voto=9.4

9.4<0.5? NO
9.4>=0.5? SI --- $scala = '1'
9.4>=1.0? SI --- $scala = '2'
...
...
9.4>=9.0? SI --- $scala = '18'
9.4>=9.5? NO
9.4>=10.0? NO

Quindi $scala='18'!
Che è corretto!