Na metody obliczeniowe mam takie zadanko mniej wiecej:
Napisac program w c/c++ ktory odkryje jaka mamy precyzję float i double (...)
Nie rozumiem słowa "jaka" poniewaz precyzja moze byc pojedyncza i podwojna wiec nie wiem co mam obliczyc... jakies pomysly ?? ;>
Precyzja Float i double
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
Precyzja Float i double
Trudno czasem powiedzieć co autor miał na myśli pisząc precyzja.
Jeśli rozumiemy przez precyzję dokładność liczby, wtedy pomocna jest pseudofunkcja sizeof(float) i sizeof(double)
W celu znalezienia najmniejszej liczby, jaką da się przedstawić za pomocą float czy double można posłużyć się prezentowanym już kiedyś kodem
U mnie odpowiedź wygląda tak
i większej precyzji (dokładności) z tych liczb się raczej nie wyciśnie.
Jeśli rozumiemy przez precyzję dokładność liczby, wtedy pomocna jest pseudofunkcja sizeof(float) i sizeof(double)
W celu znalezienia najmniejszej liczby, jaką da się przedstawić za pomocą float czy double można posłużyć się prezentowanym już kiedyś kodem
Kod: Zaznacz cały
#include <stdio.h>
float f0 = 1.0, flast;
double d0 = 1.0, dlast;
int main() {
do {
flast = f0;
f0 = f0 / 2;
} while( f0 > 0);
printf("Najmniejsza liczba typu float wynosi %g
", flast);
do {
dlast = d0;
d0 = d0 / 2;
} while( d0 > 0);
printf("Najmniejsza liczba typu double wynosi %g
", dlast);
return 0;
}
Kod: Zaznacz cały
Najmniejsza liczba typu float wynosi 1.4013e-045
Najmniejsza liczba typu double wynosi 4.94066e-324
Precyzja Float i double
5 cyfr dla float oraz 6 dla double? Oj więcej!smiechowiec pisze:U mnie odpowiedź wygląda taki większej precyzji (dokładności) z tych liczb się raczej nie wyciśnie.Kod: Zaznacz cały
Najmniejsza liczba typu float wynosi 1.4013e-045 Najmniejsza liczba typu double wynosi 4.94066e-324
To co jest po "E" mówi o zakresie, a nie o precyzji.
A może tak:
Kod: Zaznacz cały
x=MAGICZNA LICZBA MNIEJSZA OD 1;
while (frac(x) != 0.0)
x*=10;
x=floor(ln(X)/ln(10)+1);
i=x;
printf("%d", i);
1/2+1/4+1/8+1/16+..... aż liczna przestanie rosnąć lub nie zmieni się w jedynkę, przy okazji wyjdzie ile bitów siedzi w liczbie.