Quindi il mio problema è questo. Ho una formula (vedi immagine), secondo la quale dovrei calcolare alcune coordinate, date nel campo di output.I calcoli di formula lunga di PHP danno risposte errate?
ho fatto le mie formule in php, ma restituisce i risultati errati.
Formula:
$inpx =(string)3484481.0943; //input X
$inpy =(string)3144325.1033;//input Y
$inpz =(string)4305103.1740;//input Z
$dx=-2.0796; //delta X
$dy=-0.3484; //delta Y
$dz=1.7009; //delta Z
$rx=(string)(0.05465/3600)*(string)(M_PI/180);
$ry=(string)(-0.06718/3600)*(string)(M_PI/180);
$rz=(string)(0.06143/3600)*(string)(M_PI/180);
$k=(string)0.0181/(string)pow(10,6);
$n=1+$k;
$X84=$n*$inpx-$rz*$n*$inpy+$ry*$n*$inpz+$dx;
$Y84=$rz*$n*$inpx+$n*$inpy-$rx*$n*$inpz+$dy;
$Z84=-$ry*$n*$inpx+$rx*$n*$inpy+$n*$inpz+$dz;
$X84 = round($X84,4);
$Y84 = round($Y84,4);
$Z84 = round($Z84,4);
I risultati che ho dovrei ottenere
$X84 = 3484481.4163; $Y84 = 3144324.9149; $Z84 = 4305102.9848;
I risultati che ottengo
$X84 = 3484476.7392; $Y84 = 3144324.7089; $Z84 = 4305106.9208;
Sarebbe gradito se qualcuno riuscisse a trovare ciò che ho sbagliato nella mia formula, perché ho lavorato con lui per qualche giorno.
'(stringa)' deve essere rimosso. '$ k = 0,0181E-6;' o '0,0181 * 1E-6'. –
rimozione (stringa) non ha avuto effetto, ha comunque restituito le stesse risposte – Guram
Inizialmente pensavo che questo avesse a che fare con precisione doppia/singola, ma l'ho riprodotto in Java con numeri espliciti a doppia precisione e ottenuto le stesse risposte. – Tenner