Isso é muito longo para um comentário.
Você não pode fazer o que quer facilmente. Oracle está convertendo o valor de entrada
3.2
para um inteiro. O inteiro atende à restrição. O valor 3
é o que é inserido. A conversão acontece nos bastidores. Os desenvolvedores da Oracle acharam que essa conversão é uma "coisa boa". Você pode contornar isso declarando a coluna como um número e, em seguida, verificando se é um número inteiro:
create table test (
A number,
constraints ACHECK check(A between 1 and 5 and mod(A, 1) = 0)
);