IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Access
  New Posts New Posts RSS Feed - [Risolto] arrotondamento
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

 Topic   Topic Hot   Topic New   Topic Locked   Topic Sticky   Topic Hidden

[Risolto] arrotondamento

 Post Reply Post Reply
Author
Message
imperiali View Drop Down
Utente Senior
Utente Senior


Joined: 30/Lug/2010
Status: Offline
Points: 269
Post Options Post Options   Thanks (0) Thanks(0)   Quote imperiali Quote  Post ReplyReply Direct Link To This Post Topic: [Risolto] arrotondamento
    Posted: 28/Apr/2012 at 09:39
Salve. chiedo un aiuto agli amici in merito ad un arrotondamento per  una espressione matematica.
ho creato una query ove nella tabella di riferimento vi è un campo numerico ha precisione doppia con decimali 1.
la query creata somma il campo, ora il problema sta nel decimale, ossia dovrei far scattare al numero pari il decimale con ,3
es:
1,3 = 2
1,1+2,2 = 4
essendo stato sempre schiappa in matemOuch.  le sto' provando tutte ma senza nessun risultato.
chiedo se in rete vi è qualche amico/aClap che mi passi un pizzino con la formuletta da nettere nel campo criterio
grazie anticiapate
Maurizio



Edited by imperiali - 28/Apr/2012 at 11:54
maurizio
Back to Top
fcarboni View Drop Down
Utente Senior
Utente Senior
Avatar

Joined: 25/Nov/2010
Location: Italy
Status: Offline
Points: 272
Post Options Post Options   Thanks (0) Thanks(0)   Quote fcarboni Quote  Post ReplyReply Direct Link To This Post Posted: 28/Apr/2012 at 10:12
E se il tot/numero e' x,2 il risultato ti serve con i decimali o il nr intero arrotonato per difetto?
In questo caso prova:
iif((sum(tuocampo)-int(sum(tuocampo))>0,29;int(sum(tuocampo)+1;int(sum(tuocampo))
Back to Top
@Alex View Drop Down
Utente Onorario
Utente Onorario
Avatar

Joined: 09/Apr/2012
Location: Mantova
Status: Offline
Points: 819
Post Options Post Options   Thanks (0) Thanks(0)   Quote @Alex Quote  Post ReplyReply Direct Link To This Post Posted: 28/Apr/2012 at 11:00
L'arrotondamento per Eccesso si ottiene sommando il massimo quantitativo necessario per far superare il valore di soglia... quindi si prende l'intero...!

Es, se vuoi che già con 1° decimale = 3 venga arrotondato allora somma al valore 0.7

ValoreArrotondato=Int(ValoreOrignale+0.7)...

Ci sono poi considerazioni relative ei DataYpe che sono affetti dall'arrotondamento dovuto al FloatingPoint ma è altro argomento.

Questa è una funzione che arrotonda

Function Arrotonda(ByVal NumIn As Variant, _  
                   Optional AlDecimale As Integer=2, _
                   Optional Eccesso As Boolean = True) As Variant  
    
     ' [NumIn]           Numero in ingresso     
     ' [AlDecimale]      Numero di decimali al quale arrotondare.     
     ' [Eccesso]         True=Eccesso / False=Difetto          
     Dim varNum      As Variant  'Variabile
     Dim varIn       As Variant  'Numero valutato
     Dim sgnInc      As Single   'Numero di incremento per l'ECCESSO
          'Controllo la validità del Numero    
     If IsNumeric(NumIn) Then 
           ' Converto in DECIMAL per la precisione(14Byte)        
           varIn = CDec(NumIn)    
     Else         
           varIn = 0    
     End If  

     ' Il 5° decimale è per assicurare l'arrotondamento commerciale(4° decimale)    
     ' Se ECCESSO=True  --->(+ 0.99999)    
     ' Se ECCESSO=False --->(0)        
     sgnInc = Abs(Eccesso) * 0.99999     
     varNum = Abs(varIn) 
         'Arrotondo e recupero il segno dopo l'arrotondamento
     varNum = (Fix(varNum * (10 ^ AlDecimale) + sgnInc) / (10 ^ AlDecimale))     
     Arrotonda = Sgn(varIn) * varNum 
End Function





Ora se guardi quel 0.99999 in rosso dovrai sostituirlo con 0.7... la funzione è richiamabile da una Query, ma forse nel tuo caso può bastare il suggerimento iniziale Int(ValoreOrignale+0.7)

Ciao


Edited by @Alex - 28/Apr/2012 at 11:02
Non SUPPORTO il CROSSPOST.
http://mirror.masterdrive.it/alessandrobaraldi/
Scaricare i DEMO modificando l'Estensione.
Back to Top
imperiali View Drop Down
Utente Senior
Utente Senior


Joined: 30/Lug/2010
Status: Offline
Points: 269
Post Options Post Options   Thanks (0) Thanks(0)   Quote imperiali Quote  Post ReplyReply Direct Link To This Post Posted: 28/Apr/2012 at 11:14
grazie ragazzi per le vostre solerti riposte , ora testo e poi rendo dotto il forum
maurizio
Back to Top
@Alex View Drop Down
Utente Onorario
Utente Onorario
Avatar

Joined: 09/Apr/2012
Location: Mantova
Status: Offline
Points: 819
Post Options Post Options   Thanks (0) Thanks(0)   Quote @Alex Quote  Post ReplyReply Direct Link To This Post Posted: 28/Apr/2012 at 11:43
Diciamo rendere "edotto" mi pare suoni meglio... Wink
Non SUPPORTO il CROSSPOST.
http://mirror.masterdrive.it/alessandrobaraldi/
Scaricare i DEMO modificando l'Estensione.
Back to Top
imperiali View Drop Down
Utente Senior
Utente Senior


Joined: 30/Lug/2010
Status: Offline
Points: 269
Post Options Post Options   Thanks (0) Thanks(0)   Quote imperiali Quote  Post ReplyReply Direct Link To This Post Posted: 28/Apr/2012 at 11:52
le soluzioni sono state oggetto di partenza per risolvere il problema che e' si quello di portare il nomero 2,3 a 3 ma e' anche quello di lasciare inalterato il numero 2,2
dopo varie peripezie e con l'aiuto di un collega e' stata realizzata questa soluzione:
Quote
Public Function IP_to_OUT(IP As Single) As Integer
  Dim intermedio As Integer
  intermedio = Int(IP) * 3 + (IP * 10) Mod 10
  IP_to_OUT = intermedio
End Function

Public Function OUT_to_IP2(Out As Integer) As String
  OUT_to_IP2 = Int(Out / 3) & "." & Out Mod 3
End Function

Public Function IP2_to_OUT(Ip2 As String) As Integer
  IP2_to_OUT = CInt(Left(Ip2, Len(Ip2) - 2)) * 3 + CInt(Right(Ip2, 1))
End Function

lo ho lasciato come e' potrebbe servire per qualche spunto
poi nella query ho creato un campo con la seguente origine dati
Quote
=out_to_ip2(Somma(ip_to_out([IP])))

non so se e' ok ma il risultato soddisfa le mie esigenze
grazie ancora
Maurizio
maurizio
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.11
Copyright ©2001-2012 Web Wiz Ltd.

This page was generated in 0,141 seconds.