- Home
- Categorie
- Coding e Sistemistica
- PHP
- Differenza di due numeri uguali diversa da 0
-
Provo con questa funzione perchè di Php rimembro ancor... poco eh eh...
Male che vada aspettiamo altri utenti...
floatval($var)[php]
$finale_corr = floatval($totale_acc) - floatval($totale_add) - floatval($rimesse_array[$nonform]); [/php]Magari provo con un floatval di tutto il calcolo se non va.
-
Ho provato sia il floatval ad ogni singola variabile sia in generale sullo script...niente da fare, sto uscendo pazzo da almeno due giorni.
-
Meglio aspettare altri allora... prima di fare danni eh eh..
Posso solo suggerirti di fare un echo di ogni singola variabile per fare un debug?
-
Provato anche quello e mi escono i valori che sarebbero per l'esattezza:
5528.74
2141.69
3387.05la cui differenza è appunto 0... credimi non so più che provare.
In ogni modo grazie per i consigli che mi hai dato.
-
Ora lo provo in locale!
E ti so dire ok?
-
Bene mi da la stessa cosa con questo codice.
[PHP]
<?php
$totale_acc=5528.74;
$totale_add=2141.69;
$rimesse_array[0]=3387.05;
$finale_corr=floatval($totale_acc)-floatval($totale_add)-floatval($rimesse_array[0]);
echo $finale_corr;
?>
[/PHP]Dammi il tempo che il mio cervello ricordi il php e cerco di trovare una soluzione.
-
<?php
$totale_acc=number_format(5528.74, 2, ".", "");
$totale_add=number_format(2141.69, 2, ".", "");
$rimesse_array[0]=number_format(3387.05, 2, ".", "");
$finale_corr=$totale_acc-$totale_add-$rimesse_array[0];
echo $finale_corr;
?>
-
Vedi bisognava solo aspettare.
-
-
Come no ma se ho provato e dava zero a me...
-
Cosi sembra andare...
[PHP]<?php
$totale_acc=number_format(5528.74, 2);
$totale_add=number_format(2141.69, 2);
$rimesse_array[0]=number_format(3387.05, 2);
$finale_corr=$totale_acc-$totale_add-$rimesse_array[0];
echo $finale_corr;
?>[/PHP]Ricordiamoci che potrebbe entrare in conflitto l'uso del punto piuttosto della virgola... i soliti problemi della formattazione americana italiana ecc...
-
Allora... ho fatto un po' di prove...
number_format() non serve a nulla nel tuo caso... serve solo per formattare il numero da stampare a video...Così dovrebbe andare:
[php]
<?php
$totale_acc=5528.74;
$totale_add=2141.69;
$rimesse_array[0]=3387.05;
$finale_corr=$totale_acc-$totale_add-$rimesse_array[0];
$risultato=round($finale_corr, 2);
if ($risultato == "-0") $risultato = 0;
echo $risultato;
?>
[/php]Ho fatto un po' di prove modificando i numeri e "sembra" riportare risultati corretti ma è da testare bene...
-
@marcocarrieri said:
Come no ma se ho provato e dava zero a me...
Eh lo so... ma dava zero anche se cambiavi i numeri!!!
-
Non avevo provato...
Per fortuna che hai riprovato senno,...
-
Vi ringrazio entrambi per le soluzioni fornitemi, l'ultimo script funziona a meraviglia anche se mi chiedo ancora perchè mi esce quel piccolissimo numero con potenza negativa. Gli arcani misteri del php.
Grazie ancora.
-
Hai provato come suggerito che non ritorni sempre 0?
-
@Siremar said:
l'ultimo script funziona a meraviglia anche se mi chiedo ancora perchè mi esce quel piccolissimo numero con potenza negativa.
Quello devi usare (con la funzione round())...
"-0" non dovrebbe visualizzarlo se hai messo anche il controllo if
Edit: quel numero con potenza negativa, imho appare perchè php è diciamo preciso e elabora numeri con molte cifre decimali; se fai operazioni con solo 2 decimali ti tocca arrotondare (round oppure ceil)...
-
Funziona alla grande adesso