Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119

    mysql - campo DECIMAL 10,2 approssimazióne

    ho notato che se ho un campo DECIMAL con Lunghezza/Set x,2 e inserisco il numero 999.999, il DB mi approssima il 2 numero decimale a 10,

    cioè mi inserisce 1000.00

    Come faccio a non far approssimare i decimali? cioè io vorrei che mi scartasse il terzo valore decimale e basta, lasciando i primi due inalterati senza approssimazione.

    Penso che bisognerà agire sugli attributi del campo nel DB, ma non ho trovato niente in giro.

    Qualcuno può aiutarmi?

    saluti

    Giuseppe

  2. #2
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    scusate

    per 'approssimazione' intendo 'arrotondamento'


  3. #3
    Originariamente inviato da blob696
    scusate

    per 'approssimazione' intendo 'arrotondamento'

    l'arrotondamento avviene sull'intero e non sul decimale. Meglio se lo tronchi prima di inserirlo, oppure durante l'inserimento stesso... es:

    codice:
    insert into table
    campo_intero
    values
    ( (select truncate(999.999, 2)) )
    La select va messa tra parentesi tonde.

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

  4. #4
    Per forza, inserisci un numero con 3 decimali in un campo che ne consente 2...

    Quindi giusto quello che dice piero.mac, va troncato prima di inserirlo.

  5. #5
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    oppure :

    Codice PHP:
    "UPDATE `nome_tabella` SET  
    `nome_campo`= (truncate(
    $importo, 2))
    WHERE ....... 

  6. #6
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Al di là del metodo per ottenere il risultato richiesto, la matematica non è un'opinione da piegare a destra o sinistra a seconda di come ci gira
    Intendo: 999,999 non si approssima a 999,99 bensì a 1000,00

    Ci sono delle regole matematiche per l'approssimazione dei numeri.
    Togliere un decimale tout court è un errore concettuale.

  7. #7
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    non è detto che io debba per forza arrotondare un valore.

    esistono dei metodi di calcolo dettati dalla legislazione che in caso di decimali superiori a quanto consentito, quest'ultimi vanno troncati.

    oppure può capitare che debba inserire una cifra in euro e per errore metto un decimale in piu. Per esempio invece di scrivere 129.99 scrivo (per errore di battitura) 129.999, senza che me ne accorgo viene inserito il valore 130.00. Vai a trovare poi quest'errore.

    Il discorso che non voglio l'arrotondamento è dettato sia da necessità pratiche (possibile errore di battitura) che da necessità legate all'utilizzo cui lo script è destinato.


  8. #8
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Allora ti conviene inserire un controllo sulla correttezza del numero e non dare per scontato che l'errore possa essere solo quello di inserire un decimale in più

  9. #9
    Originariamente inviato da Luke70
    Al di là del metodo per ottenere il risultato richiesto, la matematica non è un'opinione da piegare a destra o sinistra a seconda di come ci gira
    Intendo: 999,999 non si approssima a 999,99 bensì a 1000,00

    Ci sono delle regole matematiche per l'approssimazione dei numeri.
    Togliere un decimale tout court è un errore concettuale.
    Appunto, evidentemente la matematica ancora è un concetto difficile per te.
    Se ho il numero decimale 5,6 e voglio che appaia intero, dato che è più vicino a 6 lo approssimo per eccesso a 6.

    Se fosse 5,4 lo approssimo per difetto a 5.

    Se il decimale è > 5 si approssima per eccesso (cioé alla cifra successiva)

    Stessa cosa per centinaia, migliaia, ecc
    Questa è matematica, non php.

  10. #10
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    Appunto.

    E' quello che sto cercando di fare ed è quello che mi è stato indicato in questo post.

    Penso che la soluzione di troncare i numeri prima di inserirli sia la migliore.


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.