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

    Arrotondare sempre per eccesso in MySQL

    Ciao a tutti...
    Ho un problemino con una query che converte dei prezzi in un db da euro a dollari...

    La query in questione è questa:

    codice:
    UPDATE `discounts_net_tmp` 
    SET price = price * (SELECT dollar FROM money_convert_rates LIMIT 1)
    Il prezzo ottenuto deve essere sempre arrotondato per eccesso al secondo decimale... come posso fare?

    Esempio se il prezzo è 1,431 deve diventare 1,44 e non 1,43 come invece fa' di default mysql...

    Qualche idea??
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  2. #2
    aggiungi 0.006 al rate del dollaro in modo che quando viene eseguito il round toward nearest (verso il piu' vicino) sia sempre il valore up.

    non andrebbe bene solo nel caso la cifra fosse con i decimali = 000 perche' arrotonderebbe a 01
    Comunque credo sia un caso praticamente inesistente che il rate del dollaro possa essere per esempio 1,000. E' una soluzione chiamiamola "al volo".....


    SELECT round(dollar + 0.006, 2) as dollar FROM money_convert_rates LIMIT 1

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

  3. #3
    Grazie mille piero! Non ci avevo proprio pensato a questa soluzione!
    Mi hai tolto da un bell'impiccio!

    Thanks!
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da king size slim
    Mi hai tolto da un bell'impiccio!
    Mica tanto.
    Alterare un dato che va moltiplicato è ben diverso dall'arrotondare il risultato. Su un importo di 1000 euro, aggiungere 6 millesimi al cambio ti fa una differenza di 6 euro, che non è proprio come arrotondare al centesimo superiore
    codice:
    UPDATE `discounts_net_tmp` 
    SET price = ceiling((price * (SELECT dollar FROM money_convert_rates LIMIT 1)) * 100)/100
    Così dovrebbe andare, ma controlla che non si perda i decimali

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.