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

    Impossibile eseguire calcolo con virgola

    ciao a tutti sotto riporto il codice che uso per ricavare acconto e saldo.
    In presenza di virgola nel post non c'è verso di far fare il calcolo giusto. dove sbaglio?

    Codice PHP:
    $totaleApagare = (float)$_POST['tot'];
    $acconto $totaleApagare*0.3;
    $saldo $totaleApagare $acconto;
    $acconto number_format($acconto,2,',','.');
    $saldo number_format($saldo,2,',','.'); 
    il post 'tot' mi ritorna: 1.910,00
    l'acconto diventa: 0,57 invece di 573
    il saldo diventa: 1,34 invece di 1337

    non capisco cosa succede
    ---------------------------
    danielix05

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    non ho ben capito la situazione, ma ricordati che . è la nostra ,
    quindi 1.910,00 è quello che tu conosci come 1,91 non 1910

  3. #3
    Giusto Alhazred se modifico così quanto sono grossolano?
    Codice PHP:
    $totaleApagare str_replace(".","",$_POST['tot']); 
    pensavo di risolvere con la funzione float ma, a quanto pare, il discorso dei punti e delle virgole non cambia.
    ---------------------------
    danielix05

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Facendo come dici tu, se ti capitasse per esempio 2.300,68, otterresti 2300 perdendoti i decimali, perché per PHP e qualsiasi altro sistema di calcolo, la virgola non vuol dire niente.
    Oltre ad eliminare il . dovresti convertire in . l'eventuale ,
    Codice PHP:
    $totaleApagare str_replace(['.',','],['','.'], $_POST['tot']); 

  5. #5
    ma usare number_format??

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ma usare number_format??
    Se provi una cosa così
    Codice PHP:
    $num '1.930,26'// senza gli apici va proprio in errore PHP e lo script non viene eseguito

    echo number_format($num,2,'.',''); 
    Ti viene fuori

    Notice: A non well formed numeric value encountered in ...
    1.93
    Perché anche secondo number_format() la , non vuol dire niente, quello che gli si passa non è un numero, va quindi prima manipolato come stringa.

  7. #7
    Dunque il problema grazie ai vostri consigli, l'ho ricercato nella prima pagina di post, facendo inviare i numeri ben formattati.Quindi, ora non si presenta più. La strada del replace non era giustamente percorribile.

    Grazie ancora.
    ---------------------------
    danielix05

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.