inner_product aus der STL mit großen Zahlen
-
Hallo,
ich möchte erstmalig die Funktion inner_product benutzen und
es sieht ein bisschen merkwürdig aus.Der Code unten sollte für ip und tip (für test-inner-product)
das gleiche Ergebnis liefern, hat aber folgende Ausgabe:ip: -2.14748e+009; tip: 3.53411e+009
Wenn ich allerdings kleinere Werte für d und i nehme,
z.B. 13487.25869432581 für d (erste Stelle gelöscht),
wird das richtige Ergebnis ausgegeben.Weiß jemand was dazu?

Vielen Dank!
#include <iostream> #include <numeric> #include <string> #include <vector> int main() { std::vector< double > d (1); std::vector< int > i (1); d[0] = 113487.25869432581; i[0] = 31141; double ip = inner_product( d.begin(), d.end(), i.begin(), 0 ); double tip = 0; for( int x = 0; x < d.size(); x++ ) { tip += d[x] * i[x]; } std::cout << "ip: " << ip << "; tip: " << tip << std::endl; std::string s; std::cin >> s; }
-
Der Ergebnistyp der Multiplikation innerhalb von inner_product wird hier durch den Typ des 4. Parameters festgelegt und das ist eine 0 und damit ein int.
Versuche:double ip = inner_product( d.begin(), d.end(), i.begin(), 0.0 ); // 4.Parameter ist 0.0 also doubleGruß
Werner