Można iterować po wszystkich możliwych wartościach long
, a następnie użyć Double.longBitsToDouble()
, aby uzyskać double
dla każdej możliwej kombinacji 64-bitowej.
Pamiętaj jednak, że to potrwa chwilę. Jeśli potrzebujesz 100 nanosekund przetwarzania dla każdej wartości double
, to zajmie to mniej więcej (nie wszystkie kombinacje bitowe są różnymi liczbami podwójnymi, np. NaN) 2^64 * 1e-7/86400/365 lat, czyli więcej niż 16e11/86400/365 = 50 700 lat na pojedynczym procesorze. Jeśli nie masz centrum przetwarzania danych do wykonania obliczeń, lepszym rozwiązaniem jest zbadanie możliwego zakresu wszystkich wartości wejściowych próbkowania przedziału w konfigurowalnej liczbie punktów.
Analogiczny wyczyn dla float
jest nadal trudny, ale możliwy do wykonania: zakładając, że potrzebujesz 10 milisekund przetwarzania dla każdej wartości wejściowej, którą potrzebujesz mniej więcej 2^32 * 1e-2/86400 = 497,1 dni na pojedynczym procesorze. W takim przypadku należy użyć Float.intBitsToFloat()
.
No skoro już można iteracyjne każdą możliwą int, po prostu iteracyjne zestaw, który składa się z każdej możliwej INT/każdej możliwej int. – asawyer
Oczywiście zdajesz sobie sprawę, że istnieje zbyt wiele różnych podwójnych (lub długich w przypadku liczb całkowitych), aby faktycznie wypróbować je wszystkie. –
Gdzie dokładnie trzeba wdrożyć taką koncepcję? – Lion