Potęgowanie z wysoką precyzją
Ostatnio zmodyfikowano 2016-08-16 10:33
MonoMisiek Temat założony przez niniejszego użytkownika |
Potęgowanie z wysoką precyzją » 2016-08-15 23:29:44 Mam problem z obliczaniem potęg. Wzór jest taki (10 ^ ((x-100)/20))*1000 Oczekiwane wyniki są takie Dla x 77 = 70.7945... Dla x 75 = 56.2341... Natomiast gdy używam funckji pow, otrzymuję za każdym razem 100. Zapewne jest ona niedokładna.
Jak obliczać potęgi z wyższą precyzją?
|
|
kistel66 |
» 2016-08-15 23:36:37 "Natomiast gdy używam funckji pow, otrzymuję za każdym razem 100" Zamiast pisać pow( 10,( x - 100...) spróbuj pow( 10.0,( x - 100.0...) |
|
MonoMisiek Temat założony przez niniejszego użytkownika |
» 2016-08-16 00:05:09 Działa. Przyznaję, że się tego nie spodziewałem... Nie rozumiem tylko skąd to się bierze? |
|
kistel66 |
» 2016-08-16 09:59:03 Samo 10 to będzie typ int, z kolei 10.0 to już jest float. Używając floata nie kasuje ci przecinków itp.. |
|
carlosmay |
» 2016-08-16 10:09:11 kolei 10.0 to już jest float |
double Używając floata nie kasuje ci przecinków |
Używając zmiennych lub wartości całkowitych zachodzi niejawna konwersja wyniku do wartości całkowitej, dlatego jeden z operandów powinien być typu zmiennoprzecinkowego. |
|
pekfos |
» 2016-08-16 10:17:49 Używając zmiennych lub wartości całkowitych zachodzi niejawna konwersja wyniku do wartości całkowitej, dlatego jeden z operandów powinien być typu zmiennoprzecinkowego. |
Niejawna konwersja z czego? W czym, w takim razie, wynik jest pierwotnie, że np wynik dodawania liczb całkowitych dopiero trzeba skonwertować na wartość całkowitą..? |
|
carlosmay |
» 2016-08-16 10:33:54 Niejawna konwersja z czego? |
Kiepsko z tym tłumaczeniem poszło. #include <iostream> using namespace std;
int main() { double wynik; wynik = 5 / 3; cout << wynik << '\n'; wynik = 5.0 / 3; cout << wynik << '\n'; } Jeśli oba operandy będą całkowite, wynikiem działania będzie liczba całkowita, niezależnie od tego czy wynik działania będzie przypisany do zmiennej zmiennoprzecinkowej. A w tym konkretnym przypadku wystarczy zmienić w wykładniku na pow( 10,(( x - 100 ) / 20.0 ) ) * 1000 |
|
« 1 » |