Witam
Piszę dość specyficzny kalkulator - nie będę się tutaj rozpisywał nad jego funkcjonalnością. Ważne jest, że precyzja to podstawa: w działaniach liczy się n-te miejsce po przecinku a taką liczbę będe musiał jeszcze pierwiastkować itp.
Jest klasa BigDecimal i teraz pytanie czy ona mi to zapewni?
Jest metoda devide i mniemam, że będzie ok ale pierwiastek?
Konwersja do double to nieporozumienie.
Znalazłem takie coś:
public static BigDecimal sqrt(BigDecimal n, int s) {
BigDecimal TWO = BigDecimal.valueOf(2);
// Obtain the first approximation
BigDecimal x = n
.divide(BigDecimal.valueOf(3), s, BigDecimal.ROUND_DOWN);
BigDecimal lastX = BigDecimal.valueOf(0);
// Proceed through 50 iterations
for (int i = 0; i < 50; i++) {
x = n.add(x.multiply(x)).divide(x.multiply(TWO), s,
BigDecimal.ROUND_DOWN);
if (x.compareTo(lastX) == 0)
break;
lastX = x;
}
return x;
}
Co myślicie? Dodam, że jeszcze też muszę logarytmowac takie niewdzięczne liczby - jakieś pomysły czy zostaje mi tylko implementacja samemu jakiegoś algorytmu numerycznego.
Inne pytanie - kiedys na tym forum była opisana biblioteka, która obsługiwała sama kolejnosc zadan arytmetycznych - również nawiasy itp. rzeczy. Pamięta ktoś?
Za wszelkie podpowiedzi będe naprawdę wdzięczny!