Dzięki odpowiedniemu uporządkowaniu działań w metodzie tej nie występują ułamki – wszystkie wyniki pośrednie są całkowite, a więc nie ma ryzyka błędów zaokrąglenia.
Przykładowa procedura w Pascalu:
function WspNewtona( n, k : integer ) : integer; var wynik : integer; i : integer; begin wynik := 1;
for i := 1 to k do wynik := wynik * (n - i + 1) div i;
WspNewtona := wynik; end;
Przykładowa metoda 64-bitowa w Javie kontrolująca przepełnienie typu Long:
long symbolNewtona(final long N, final long K) { assert N >= 0; assert K >= 0;
if (N < K) return 0L;
if (K == 0 || K == N) return 1L;
if (K == 1 || K == N - 1) return N;
long wynik = 1L; try
final long maxK = Math.min(K, N - K); for (long i = 1L; i <= maxK; i++) wynik = Math.multiplyExact(wynik, (N - i + 1)) / i;
catch (ArithmeticException e)
return -1L;
return wynik; }
Drugi przykład w Javie daje poprawne wyniki dla dowolnych dodatnich danych wejściowych: BigInteger symbolNewtona(final long N, final long K) { assert N >= 0; assert K >= 0;
if (N < K) return BigInteger.valueOf(0);
if (K == 0L || K == N) return BigInteger.valueOf(1);
if (K == 1L || K == N - 1L) return BigInteger.valueOf(N);
BigInteger result = BigInteger.valueOf(1);