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

fałszywa trzynastka ?

Ostatnio zmodyfikowano 2015-12-13 08:56
Autor Wiadomość
Geniusz
Temat założony przez niniejszego użytkownika
fałszywa trzynastka ?
» 2015-12-12 23:49:12
Pamiętam, że już kiedyś miałem problem z funkcją pow, ale wtedy nie był on aż tak rażący.

Dlaczego akurat przy 13 pojawiają się błędy ?

Używam kompilatora dołączonego do Codeblocks 13.12

C/C++
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int W;
   
    W = pow( 11, 1 ) * 10;
    cout << W << endl; // 110
    W = pow( 12, 1 ) * 10;
    cout << W << endl; // 120
    W = pow( 13, 1 ) * 10;
    cout << W << endl; // 129 !?
    W = pow( 14, 1 ) * 10;
    cout << W << endl; // 140
    cout << pow( 13, 1 ) << endl; // 13
    W = pow( 13, 1 );
    cout << W << endl; // 12 !?
    W *= 10;
    cout << W << endl; // 120 !?
   
    return 0;
}
P-141857
pekfos
» 2015-12-13 00:13:52
Niedokładność obliczeń i zapisu liczb.
P-141860
michal11
» 2015-12-13 01:07:34
Zamień
int W
 na
float W
, i zobacz co się stanie.
P-141862
carlosmay
» 2015-12-13 01:13:48
Funkcja std::pow() zwraca wartość typu double .
P-141863
Elaine
» 2015-12-13 02:54:01
Bug w implementacji std::pow. Nie ma żadnego powodu, dla którego std::pow(13.0, 1.0) nie miałoby zwracać dokładnie 13.0.
P-141865
Geniusz
Temat założony przez niniejszego użytkownika
» 2015-12-13 08:56:30
michal11, pomogło, dzieki
P-141867
« 1 »
  Strona 1 z 1