Adam Riese und PHP - falsche Ergebnisse

Cube

Grünschnabel
Ich habe folgendes PHP Script entwickelt um nach einem bestimmten Rechenverfahren eine Punktzahl für eine Liga auszurechnen. Es gibt insgesamt 4, genau genommen 5 Faktoren, aus denen sich die Punkte ergeben. Leider erhalte ich in den Multiplikationen falsche Ergebnisse auch wenn ich Dezimalzahlen runde.
Vl. erst einmal mein Script: http://www.solarthemen.de/sobuli/larsform.php

Ich poste jetzt nicht den gesamten Code. Eventuell wird das Prob. ja so schon deutlich. Wenn ihr oben in der Maske 0,9 | 0,9 | 2 | 0,9 | 100 | als Werte eingebt, erhaltet ihr 3 Pkt. als Ergebnis, erhöht ihr die 0,9 Werte um 0,1 auf 1 erhaltet ihr 8 Pkt. -> FEHLER

ein falsches Ergebnis ergibt sich auf jeden Fall bei

PHP:
$Cg=round($Cg*1000,15);

PHP:
$Z=round((0.7*$B),10);
$S=round(($A+$Z),10);
$K=round($S/$D,5);
$X=$K/0.01;

Vielleicht kennt ja jemand von euch das Prob. Schon mal jetzt vielen Dank!
 
Hi.

Ja, das ist komisch.
Hab Mal in C++ ein Konsolenprogramm geschrieben, der den Tangens einer Zahl x ausrechnet. Hat er auch gemacht, hab dann Mal den Taschenrechner hergenommen, das ergebnis war ein anderes..
Ist mir unerklärlich..

Hab dann aber Mal geschrieben, dass er die Wurzel einer Zahl x ausrechnen soll, die hat dann aber gestimmt. :suspekt:
Komisch..


MfG Alexander12
 
@Cube
Kannst Du mal die Formeln der Berechnung posten?

So komme ich irgendwie nicht weiter.

Was genau wird denn nicht korrekt gerundet?

@Alexander12
Hab Mal in C++ ein Konsolenprogramm geschrieben, der den Tangens einer Zahl x ausrechnet. Hat er auch gemacht, hab dann Mal den Taschenrechner hergenommen, das ergebnis war ein anderes..
Ist mir unerklärlich..
Hast Du an die Umrechnung Grad<>Bogenmaß gedacht?

vop
 
Hm..

Ich habe das so gemacht

Code:
int Zahl = sqrt(x);

musst dann ober natürlich noch

Code:
#include <cmath>

einbinden.


MfG Alexander12
 
PHP:
$A=$HTTP_POST_VARS["A"]; //Fläche Solarthermie: x qm
$B=$HTTP_POST_VARS["B"]; //Fläche unverglaste Absorber: x qm
$C=$HTTP_POST_VARS["C"]; //Photovoltaik-Leistung in Watt: x kWatt
$Cg=$HTTP_POST_VARS["Cg"]; //Photovoltaik-Leistung in Watt: x kWatt
$D=$HTTP_POST_VARS["D"]; //Einwohner: x

round($A,3);
round($B,3);
round($C,4);
round($Cg,4);

$C=$C*1000;
$Cg=round($Cg*1000,15);

//1 Rechnung
$Z=round((0.7*$B),10);
$S=round(($A+$Z),10);
$K=round($S/$D,5);
$X=$K/0.01; //einen Punkt gibt es für  0.01qm/Einw.

//2 Rechnung
//PV Großanlagen
$Lg=round($Cg/$D,5);
$Yg=round($Lg/3,5);
$PktG=round(pow((sqrt($Yg)),2)*0.5,5);

if($PktG>40.1)
{
$L=round(($C-$Cg)/$D,2);
$Y=round($L/3,2);

//3 Rechnung
$Punktzahl=round(pow((sqrt($X)+sqrt($Y)),2)*0.5,5);
$Punktzahl=$Punktzahl+40.1;}

else
{
$L=round($C/$D,2);
$Y=round($L/3,2);
//3 Rechnung
$Punktzahl=round(pow((sqrt($X)+sqrt($Y)),2)*0.5,5);}

echo round($Punktzahl);

echo ($Punktzahl);
}}}//}


Ein Bsp. ist: Gibt man bei der "Photovoltaik-Leistung:" 2,2 ein, erhält $C nicht wie es eigentlich richtig wäre 2200 sondern nur 2000. Das kann ja so nicht richtig sein.
Die verschiedenen rounds sind übrings willkürlich zum testen gewählt. Die versch. Test Ausgaben habe ich aus dem Code entfernt. Außerdem sind versch. Überprüfungen entfallen, die testen ob logische Zahlen eingegeben wurden. Vielleicht kommt ihr jetzt ja weiter... Nochmals Danke!
 
Zurück