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 double
    

    Gruß
    Werner


Anmelden zum Antworten