Sí, los tipos NUMBER de Oracle son precisos. Son más como números enteros con una escala que tipos flotantes/dobles. Entonces, un NÚMERO (10,3) tiene 10 dígitos, 3 después del punto decimal, que en realidad es un número entero de 10 dígitos con una escala de 3. De hecho, así es como funcionan Java BigDecimals (siendo un BigInteger más una escala internamente).