Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    158

    Perdo i decimali dopo la virgola nella conversione da string a double

    Leggo dei dati da un file di testo che andranno ad aggiornare il mio db, in particolare il campo prezzo. Il campo prezzo appena prelevato da gettype($PrezzoAcquisto) risulta string, lo converto in double con $PrezzoAcquisto=(double) $PrezzoAcquisto ma mi prende solo la parte intera e non quello che c'è dopo il punto. Ad es. 15.39 diventa 15. Come fare???

  2. #2
    A me funziona perfettamente:

    Codice PHP:
    <?php 
    $PrezzoAcquisto 
    '15.39';
    $PrezzoAcquisto = (double)$PrezzoAcquisto;
    var_dump($PrezzoAcquisto);
    ?>

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    158
    Come hai fatto tu mi funziona, impostando $PrezzoAcquisto = '15.39'; Nel mio caso no....
    Io ho questo:

    $fp=fopen("PreisListe.txt",'r');
    while (! feof($fp))
    {
    $line=fgets($fp, 1024);
    $Codice=strtok($line,$delimita);
    $blocks=explode(";","$line");
    $PrezzoAcquisto=($blocks[2]); // e mi da il valore giusto ad es. 12.39
    echo gettype($PrezzoAcquisto); // mi restituisce string
    $PrezzoAcquisto=(double) $PrezzoAcquisto; // Se $PrezzoAcquisto era 12.39 mi da 12.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    158
    Se la cosa puo aiutarti ad aiutarmi le righe del file hanno questa forma:

    100477;HD Geh LAN/USB 3,5 IDEx2 Netgear SC101GR;64,9;4;SC101GR;externe Festplattengeh„use;Netgear;;4718755190773

    Col mio listato ricavo:

    $blocks[0] è il codice, cioè --> 100477
    $blocks[1] è la descrizione, cioè --> HD Geh LAN/USB 3,5 IDEx2 Netgear SC101GR
    $blocks[2] è il prezzo d'acuisto --> 64,9 che è quello che vado a mettere in $PrezzoAcquisto.

    Quindi:

    $PrezzoAcquisto=$blocks[2];
    $PrezzoAcquisto=(double) $PrezzoAcquisto;
    print ("$PrezzoAcquisto") // mi restituisce in questo caso 64

    a me sembra corretto ma non funziona comunque... in questo caso mi restituisce 64 e se faccio un number format mi restituisce 64.00 quindi ho perso i decimali dopo il punto, cioè in questo caso 90 centesimi. Eppure la soluzione dovrebbe essere semplice...

  5. #5
    Sostituisci la virgola con il punto prima della conversione
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    158
    Ho sostituito il il punto con la virgola e subito dopo la virgola con il punto, è assurdo ma cosi funziona anche se mi piacerebbe sapere perhè.

  7. #7
    Originariamente inviato da Yeye
    Ho sostituito il il punto con la virgola e subito dopo la virgola con il punto, è assurdo ma cosi funziona anche se mi piacerebbe sapere perhè.
    http://www.php.net/manual/en/languag...ing.conversion

    The string will be evaluated as a float if it contains any of the characters '.', 'e', or 'E'. Otherwise, it will be evaluated as an integer.

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.