Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Errore -0 e 0 nel calcolo con decimali

    Buongiorno a tutti,
    ho bisogno per lavoro che php mi faccia semplici calcoli di sottrazione, somma e prodotto tra numeri decimali.

    Vi posto due accoppiate form html + script php.

    La n. 1 dà come risultato sempre -0 (che non capisco quale senso abbia).

    La n. 2 dà sempre 0, che è sbagliato perchè i calcoli forniscono un numero positivo.

    Chi mi risolve il problema per primo riceverà come ringraziamento 50 Euro tramite Postepay o Bonnifico su cc bancario o postale.

    Federico Colombara

    Set 1:

    Form:

    <form method="post" action="calcolo_1.php">

    Input 1:<br /><input name="$input_1" type="double" size="15" maxlength="10" /><br /><br />
    Input 2<br /><input name="$input_2" type="double" size="30" maxlength="10" /><br /><br />
    Input 3<br /><input name="$input_3" type="double" size="30" maxlength="10" /><br /><br />




    <input type="reset" value=":: reset ::" />&nbsp;<input type="submit" value="CALCOLA" />
    </form>

    Script PHP denominato calcolo_1.php:

    <?PHP


    $risultato_1 = ($input_1 * ( ( $input_1" - 0.047586) + ($input_3 - 0.587456) ) );


    if ($input_1 > 165826)


    echo "<br>Il risultato è $risultato_1 <br><br>";


    if ($mc_a < 165826)
    echo "Purtroppo non possiamo aiutarti";


    ?>


    Tipicamente l'input 1 vale da 10.000 a 300.000, e gli input 2 e 3 sono numeri con 4 cifre decimali e minori di 1.

    Ed ecco il secondo set, che dà sempre come risultato 0:

    Form HTML:

    <form name="calcolo" action="calcolo_2.php" method="post">
    Inserire N <input type="double" name="N" size="10" maxlength="10" value="Max numero a 10 cifre..">
    Inserire T<input type="double" name="T" size="10" maxlength="10" value="Max numero a 10 cifre..">
    Inserire I<input type="double" name="I" size="10" maxlength="10" value="Max numero a 10 cifre..">
    <input type="submit" name="calcola" value="CALCOLA" class="submit">
    </form>

    con il suo script PHP denominato naturalmente calcolo_2.php che è :

    <?php
    if(isSet($_POST['calcola'])){




    if(isSet($_POST['N'])){




    $numero = $_POST['N'];




    }




    else{






    $numero = NULL;


    }






    if($numero != NULL){


    $numero = (N * ((T - 0.52545) * (A - 0.085745) ) );


    echo "Il risultato ammonta $numero";
    }


    }



    ?>


    che dà sempre come risultato lo 0.

    Grazie e buona soluzione!

    PS: come type degli input ho messo sempre "double" perchè sono decimali a virgola mobile ma...siamo sicuri che esista questo tipo in PHP? o bisognerebbe mettere "text"?
    Invece l' "integer" lo escluderei perchè appunto non sono interi ma con (anche 6) cifre decimali.

    Grazie a tutti!!!
    Progetti in corso: www.grandesuccesso.it il miglior sito d'Italia dedicato al successo;
    basta multe! (cerca su Google bastamulte.net)

  2. #2
    Non so dove hai trovato lo script php ma e' errato. impossibile possa funzionare in entrambi i casi.

    Come minimo dovresti avere l'ormai straobsoleto register_globals in ON deprecato gia' a partire dalla versione php 5.3.0 e rimosso da php 5.4.0 per il listato calcolo_1.php mentre per il secondo usi delle costanti non dichiarate....

    Ergo, non si tratta di un mistero ma di errori dello script.

    Dovresti pero' anche indicare i valori immessi per avere un riferimento realistico (dopo aver fatto funzionare lo script)
    Ultima modifica di piero.mac; 24-10-2013 a 10:48

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    $numero = (N * ((T - 0.52545) * (A - 0.085745) ) );
    questa parte è semplicemente incompatibile con la sintassi di php (a meno che N, T, e A non siano delle costanti, cosa che logicamente non avrebbe molto senso).

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.