Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Potęgowanie z wysoką precyzją

Ostatnio zmodyfikowano 2016-08-16 10:33
Autor Wiadomość
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ą?
P-150910
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...)
P-150911
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?
P-150913
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..
P-150921
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.
P-150922
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ą..?
P-150924
carlosmay
» 2016-08-16 10:33:54
Niejawna konwersja z czego?
Kiepsko z tym tłumaczeniem poszło.

C/C++
#include <iostream>
using namespace std;

int main()
{
    double wynik;
    wynik = 5 / 3;
    cout << wynik << '\n'; // 1
    wynik = 5.0 / 3;
    cout << wynik << '\n'; // 1.66667
}
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
P-150925
« 1 »
  Strona 1 z 1