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

Osiem dziesiętnych cyfr znaczących w typie float

Ostatnio zmodyfikowano 2018-01-03 07:19
Autor Wiadomość
mateczek
» 2018-01-03 07:19:36
Arytmetyki stałoprzecinkowej nie trzeba nawet emulować, bo to arytmetyka całkowita, tylko wynik jest inaczej interpretowany.

jak najbardziej racja. Ja tak liczę na niektórych sterownikach plc.




i tak w ramach testu program silnia na różnych typach danych :
C/C++
#include <iostream>

using namespace std;

int main()
{
    float liczba = 1;
    long double liczba2 = 1;
    long long liczba3 = 1;
    for( int i = 1; i < 50; i++ ) {
        liczba *= i;
        liczba2 *= i;
        liczba3 *= i;
        cout << fixed << "f: " << liczba << " ld: " << liczba2 << " ll: " << liczba3 << endl;
    }
   
}

f-float; ld-long double; ll -long long;

f: 1.000000 ld: 1.000000 ll: 1
f: 2.000000 ld: 2.000000 ll: 2
f: 6.000000 ld: 6.000000 ll: 6
f: 24.000000 ld: 24.000000 ll: 24
f: 120.000000 ld: 120.000000 ll: 120
f: 720.000000 ld: 720.000000 ll: 720
f: 5040.000000 ld: 5040.000000 ll: 5040
f: 40320.000000 ld: 40320.000000 ll: 40320
f: 362880.000000 ld: 362880.000000 ll: 362880
f: 3628800.000000 ld: 3628800.000000 ll: 3628800
f: 39916800.000000 ld: 39916800.000000 ll: 39916800
f: 479001600.000000 ld: 479001600.000000 ll: 479001600
f: 6227020800.000000 ld: 6227020800.000000 ll: 6227020800
f: 87178289152.000000 ld: 87178291200.000000 ll: 87178291200                              //float przybliża ale liczy dalej
f: 1307674279936.000000 ld: 1307674368000.000000 ll: 1307674368000
f: 20922788478976.000000 ld: 20922789888000.000000 ll: 20922789888000
f: 355687414628352.000000 ld: 355687428096000.000000 ll: 355687428096000
f: 6402373530419200.000000 ld: 6402373705728000.000000 ll: 6402373705728000
f: 121645096004222976.000000 ld: 121645100408832000.000000 ll: 121645100408832000
f: 2432902023163674624.000000 ld: 2432902008176640000.000000 ll: 2432902008176640000
f: 51090940837169725440.000000 ld: 51090942171709440000.000000 ll: -4249290049419214848   //long long się wysypał przy 20!
P-168373
1 « 2 »
Poprzednia strona Strona 2 z 2