Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Differenza di due numeri uguali diversa da 0
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • S
      siremar User • 2 giu 2010, 14:46 ultima modifica di

      Differenza di due numeri uguali diversa da 0

      Buongiorno a tutti,
      vi pongo il mio problema che credo abbia afflitto anche qualcun altro.

      In un mio script ho la differenza di tre variabili, per semplificare ipotizziamo che queste valgano 5, 3 e 2.

      Quindi effettuando la differenza [PHP]$finale_corr = $totale_acc - $totale_add - $rimesse_array[$nonform];[/PHP] 5 - 3 - 2 dovrebbe uscire 0 e invece mi esce: -4.54747350886E-013.

      Sapreste darmi un perchè e un modo per risolvere.
      Grazie anticipatamente.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
        Caricamento altri post
        Rispondi
        • Topic risposta
        Effettua l'accesso per rispondere
        • Da Vecchi a Nuovi
        • Da Nuovi a Vecchi
        • Più Voti
         

      • marcocarrieri
        marcocarrieri ModSenior • 2 giu 2010, 15:19 ultima modifica di

        I numeri sono tutti in base 10? C'è la possibilità che qualche numero possa essere "frainteso"?

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • S
          siremar User • 2 giu 2010, 15:41 ultima modifica di

          Sono numeri a due cifre decimali (Discorso di Euri :1:

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • marcocarrieri
            marcocarrieri ModSenior • 2 giu 2010, 15:47 ultima modifica di

            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. 🙂

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • S
              siremar User • 2 giu 2010, 15:52 ultima modifica di

              Ho provato sia il floatval ad ogni singola variabile sia in generale sullo script...niente da fare, sto uscendo pazzo da almeno due giorni.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • marcocarrieri
                marcocarrieri ModSenior • 2 giu 2010, 15:53 ultima modifica di

                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?

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • S
                  siremar User • 2 giu 2010, 15:56 ultima modifica di

                  Provato anche quello e mi escono i valori che sarebbero per l'esattezza:

                  5528.74
                  2141.69
                  3387.05

                  la cui differenza è appunto 0... credimi non so più che provare.
                  In ogni modo grazie per i consigli che mi hai dato.

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • marcocarrieri
                    marcocarrieri ModSenior • 2 giu 2010, 16:00 ultima modifica di

                    Ora lo provo in locale!
                    E ti so dire ok?

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • marcocarrieri
                      marcocarrieri ModSenior • 2 giu 2010, 16:04 ultima modifica di

                      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. 🙂

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • T
                        tigrone User Attivo • 2 giu 2010, 16:45 ultima modifica di

                        <?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;
                        ?>

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • marcocarrieri
                          marcocarrieri ModSenior • 2 giu 2010, 16:48 ultima modifica di

                          Vedi bisognava solo aspettare. 🙂

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • T
                            tigrone User Attivo • 2 giu 2010, 16:53 ultima modifica di

                            @marcocarrieri said:

                            Vedi bisognava solo aspettare. 🙂

                            Ehm... no.. non funziona bene neanche così... :gtsad:

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • marcocarrieri
                              marcocarrieri ModSenior • 2 giu 2010, 16:54 ultima modifica di

                              Come no ma se ho provato e dava zero a me...

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • marcocarrieri
                                marcocarrieri ModSenior • 2 giu 2010, 16:57 ultima modifica di

                                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...

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • T
                                  tigrone User Attivo • 2 giu 2010, 17:14 ultima modifica di

                                  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...

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • T
                                    tigrone User Attivo • 2 giu 2010, 17:31 ultima modifica di

                                    @marcocarrieri said:

                                    Come no ma se ho provato e dava zero a me...
                                    Eh lo so... ma dava zero anche se cambiavi i numeri!!!

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • marcocarrieri
                                      marcocarrieri ModSenior • 3 giu 2010, 04:16 ultima modifica di

                                      Non avevo provato... 😄
                                      Per fortuna che hai riprovato senno,... 😛

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • S
                                        siremar User • 3 giu 2010, 07:43 ultima modifica di

                                        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.

                                        0 Miglior Risposta Ringrazia Cita Rispondi

                                          1 Risposta Ultima Risposta
                                        • marcocarrieri
                                          marcocarrieri ModSenior • 3 giu 2010, 07:50 ultima modifica di

                                          Hai provato come suggerito che non ritorni sempre 0? 🙂

                                          0 Miglior Risposta Ringrazia Cita Rispondi

                                            1 Risposta Ultima Risposta
                                          • T
                                            tigrone User Attivo • 3 giu 2010, 08:18 ultima modifica di

                                            @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)...

                                            0 Miglior Risposta Ringrazia Cita Rispondi

                                              1 Risposta Ultima Risposta
                                            Caricamento altri post
                                            Rispondi
                                            • Topic risposta
                                            Effettua l'accesso per rispondere
                                            • Da Vecchi a Nuovi
                                            • Da Nuovi a Vecchi
                                            • Più Voti