Newsgroup: it.comp.appl.access
Titolo: Funzione per troncare un numero

Salve a tutti,
avendo bisogno di una funzione per troncare il numero ad una certa cifra 
decimale, ho adattato quella di Karl per l'arrotondamento.
La funzione è diventata:
Function fctTronca(Optional varNr, Optional varPl As Integer = 2)
'varNr: numero da troncare
'varPI: numero di decimali (due predefinito)
   If IsMissing(varNr) Or Not IsNumeric(varNr) Then Exit Function
   fctTronca = Fix("" & varNr * (10 ^ varPl)) / (10 ^ varPl)
End Function
Ho fatto alcune prove, mi sembra che vada bene,  ma non vorrei che mi 
sfuggisse qualcosa. Secondo voi è corretta?
Grazie mille
-- 
Nina 

 ha scritto nel messaggio 
news:44f69d50$0$47964$4faf...@reader3.news.tin.it...

Cerca con google se qualcuno ha avuto "qualcosa da ridire" a proposito della 
funzione...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:ed6o75$j3t$1...@area.cu.mi.it...

Scusa Sergio, ma non capisco!
Dovrei cercare su Google se qualcuno ha avuto da ridire sulla funzione che 
ho adattato (non posso certo dire di averla creata visto che ha come base la 
funzione di Karl)?
E' chiaro che quella di Karl funziona ottimamente (la uso tranquillamente 
nei miei programmi), mentre non vorrei che il mio adattamento  per trovare 
un valore troncato (non arrotondato) nascondesse qualche difetto.
Ciò che chiedo è solo un vostro parere
Ciao
Grazie
Nina

 Nina
Ciao.
-- 
Sergio MAZZA 

 Scusa Sergio, ma non capisco!
Eh, Sergio non c'ha mai saputo fà con le donne...
A me pare vada bene... ma potremmo discuterne meglio a cena...
Antonio

 Antonio
Non c'è bisogno che ti segnali il ristorante vero?
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ciao, grazie ancora
Nina 

"Antonio Biso" <ch...@NOSPAMetruria.net> ha scritto nel messaggio 
news:NiCJg.88842$zy5.1...@twister1.libero.it...

Antonio, non cambierai mai
Grazie per il parere che mi hai dato, per la cena ne riparleremo un'altra 
volta :)
Ciao
Nina

 ha scritto nel messaggio 
news:44f6f382$0$15881$4faf...@reader2.news.tin.it...

Ho trovato il thread a cui ti riferivi
Come suggerito da Giorgio Rancati, credo che convertirň i valori in decimal 
prima di applicare la funzione
Grazie ancora
Nina


 Nina
Di nulla...
Ciao.
P.S. Quindi a cena vieni con me?
-- 
Sergio MAZZA 

 Nina
2dP eh?
Antonio

 decimal prima di applicare la funzione
Posta la tua funzione risultante.
L'adattamento che hai postato prima solo tronca bene
fino a ca. 14 decimali.
-- 
cu
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 Sergio MAZZA 

 Access FAQ: 
www.donkarl.com/it
Mhmm... Iniziamo ad essere troppi al tavolo...
Facciamo alla Romana, eh?
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Ciao
Nina 


Ciao
Nina 

 Posta la tua funzione risultante.
Ho adattato la funzione di Giorgio Rancati (presente sul suo sito)
Function fctTronca(ByVal Numero As Variant, Optional Decimali As Variant =
2) As Variant
  'Numero =Numero in ingresso
  'Decimali=Decimali desiderati
  Dim Result As Variant  'Risultato
  Dim Nr     As Variant  'Numero da trattare
  Dim Dec    As Integer  'Numero decimali
  Dec = Decimali
  'Controllo massimo numero di decimali
  If Dec > 10 Then Dec = 10
  'Converto il numero in ingresso nel tipo decimal
  Nr = CDec(Nz(Numero, 0))
  'Tolgo l'eventuale segno negativo
  Nr = Abs(Nr)
  'Arrotondo
  Result = Nr * 10 ^ Dec
  Result = Fix(Result) / 10 ^ Dec
  'Riassegno l'eventuale segno negativo e rendo il risultato
  fctTronca = Result * Sgn(Nz(Numero, 0))
End Function

 ha scritto nel messaggio
news:44f70034$0$30246$4faf...@reader1.news.tin.it...

Eccoollà, 2dP per tutti...
due di picche...
Antonio

 End Function
Secondo me produce gli stessi risultati e errori come la
tua prima versione. p.e.
?fctTronca(1.02999999999999)
 1,02
?fctTronca(1.029999999999999)
 1,03


 Access FAQ: 
www.donkarl.com/it
Grazie, ciao
Nina 


:))))
Ciao
Nina