Caro Cristiano
Não sei se existe um método melhor.
Eu prefiro dizer que o melhor é o que se sabe, funciona e na qual você sinta-se a vontade.
Eu recomendaria usar expressões regulares para isso, onde pode usar com test, grep, sed, awk, python e perl.
Basicamente seria uma regex tipo: [+-]?\d+([,.]\d+)?
Em casa programa isso pode ser implementado a sua maneira, mesmo em versões diferentes do mesmo programa se precisar manter a compatibilidade:
Um exemplo com grep seria:
grep '^[+-]\{0,1\}[0-9]\{1,\}\([,.][0-9]\{1,\}\)\{0,1\}$'
Aqui poderia usar echo "numero" | grep ...
ou grep ... <<< "numero"
Isso ajuda?
[]'s
Itamar