Newsgroup: it.comp.appl.access
Titolo: restituire un determinato numero di decimali dopo la virgola

Ciao a tutti,
 
come posso estrarre un numero con soli i primi tre decimali?
 
esempio:
 
da
 1,02345
 
a
1,023
 
grazie


Ciao,
Puoi troncare la stringa di origine, o arrotondare con tre cifre decimali.
Quale delle due ti serve?


troncare la stringa di origine


per troncare dopo la terza cifra decimale:
1. prima devi trovare la posizione X occupata dalla virgola nel numero iniziale che vuoi troncare, con la funzione instr:
X = instr([mionumero], ",")
Es: se [mionumero] = 10,02345, allora
X = instr([10,02345], ",") = 3
 
2. poi devi aggiungere 3 (il numero di posizioni decimali che desideri) alla posizione che hai ricavato al punto 1:
Y = X + 3
 
3. poi usando left tronchi il numero originario impostando il numero di caratteri pari a quelli restituiti al punto 2, partendo da sinistra:
numerotroncato = left([mionumero], Y)
numerotroncato = left([mionumero], instr([mionumero], ",") + 3)
 
 
Spero di essermi spiegato.. :D

Devi arrotondare al 3° decimale oppure solo visualizzarne 3...?
Sono 2 concetti tecnici estremamente diversi, el'arrotondamento richiede codice mentre la visualizzazione di solo 3 caratteri decimali basta l'impostazione della proprietà numero decimali.
 
Fai attenzione che se arrotondi poi i calcoli sono di conseguenza... se usi la sola visualizzazione mantieni la precisione di calcolo e la dove si hanno € meglio mantenere il dato Currency ed arrotondare SOLO alla fine.
 
Vedi tu...
@Alex


no no Alex,
devo proprio troncare alla terza cifra, la quantità ce l'ho già a decimale scala 3.
il fatto che una equazione mi restituisce un numero con tante virgole e me ne servono solo tre.
 
Non posso usare l'arrotondamento perché il terzo decimale varia a seconda del quarto, insomma per farla breve mi serve eliminare i decimali dopo la terza posizione.
ciao


direi che è perfetta come soluzione, chiara molto chiara.
Però se non ho capito male:
 numerotroncato = left([mionumero], instr([mionumero], ",") + 3)
è superfluo, no?

>>>>  
http://www.bb2002.it
 :)  <<<<<
........... [ al lavoro ] ...........

 
 
troppo complicata, risolvi tutto con molto meno


 
 
p.s.
N deve essere definito in modo che il passaggio tra binario e decimale non 
causi effetti collaterali indesiderati
 
p.e. 0.0625 č un numero rappresentabile correttamente in binario mentre 
0.062 non lo č


Una sola osservazione... il DECIMAL-SEPARATOR... a seconda dei Regional Srttings puo essere [.] o [,]... scriverei un codice più flessibile, perchè se cambi PC e cambiano i R.S. poi tocca mettere mano al codice...
 
Function DecimalSeparator() As String
    DecimalSeparator = MID$(1 / 2, 2, 1)
End Function
 
@Alex

 mano al codice... 
 
ok, ma non devi dirlo a me
la mia soluzione ่ pura matematica


L'osservazione è generale a completare il tuo suggerimento.
 
@Alex


quindi che vuol dire : N deve essere definito.....? che dovrei fare?


scusa Alex ma che farebbe il tuo completamento? a che cosa è riferito? a quello che ha detto Ammammata?

 scusa Alex ma che farebbe il tuo completamento? a che cosa è riferito? a quello che ha detto Ammammata?
 
Si, il suo suggerimento che assolve alla tua richiesta, lo fa solo se il PC in cui gira l'applicaitvo ha come Impostazioni del S.O. il simbolo DECIMALE che nel codice viene cercato... ma non è detto sia quello dal momento che puoi impostare la VIRGOLA o il PUNTO come separatore.
 
Quindi ho suggerito di NON cercare un carattere fisso, ma di cercare quello di sistema che si ricava come indicato.
 
In questo modo l'applicativo relativamente a questo aspetto gira a precindere dai settaggi.
 
@Alex

 Si, il suo suggerimento che assolve alla tua richiesta
 
e batte col "suo" :/
 
"suo" di sta minchia, io non ho mica suggerito quintali di codice per fare 
quello che si ottiene con un "per" e un "diviso" e fottesega se l'utente ha 
i regional settings del lesotho piuttosto che del kamchatka


 
 
ah che bello! 
ti metti a smanacciare in access e manco sai come configurare i dati? 


 
 
 
Hai suggerito il modo per TRONCARE o sbaglio..?
Quello... è la parte a cui mi riferisco, e siccome è un suggerimento parziale... ho fatto un'aggiunta, poi è evidente che chi non ha problemi di Regional Settings non si pone nemmeno questi concetti, ma non significa non esistano, ci sono anche persone che sviluppano per ambiti più ampi e con problematiche più complesse, e mi sono limitato a prenderne in considerazione una legata alla problematica.
 
P.S. Cercavo di capire se quei toni "accesi" hanno effetti rafforzativi della tua capacità tecnica...? Boh... sarà... 
 
@Alex

 scusa Alex ma che farebbe il tuo completamento? a che cosa Ã¨ riferit
o? a quello che ha detto Ammammata?
 
Si, il suo suggerimento che assolve alla tua richiesta, lo fa solo se il PC 
in cui gira l'applicaitvo ha come Impostazioni del S.O. il simbolo DECIMALE 
che nel codice viene cercato... 
 
 
il suo (cioè mio) non è mio, punto



calmatevi, va tutto bene e vi ringrazio. Ciao


non funziona, eman! mi restitusce una stringa accidenti
"12,023"

Dai su non fare il "caga rampini"... a prescindere non era un'offesa quindi usare inutili toni accesi non impressiona nessuno... ma di certo sono inutili ;-)
 
@Alex

Perché il fatto che ti restituisca una stringa è un problema?
(In caso puoi convertirla..)

 (In caso puoi convertirla..)
 
eh sì, perché dovevo poi editarla in un campo numerico, si l'ho convertita grazie

 non arrotonda, TRONCA
 
È tutto qui... pura matematica.
 
Int e Fix sono alternativi per N > 0,
per N < 0 nessuno dei due funziona sempre correttamente,
per cui dato Dec il numero dei decimali che si vuole ottenere:
 
    Sgn(N) * Int(Abs(N) * 10 ^ Dec)
    -------------------------------
             10 ^ Dec
 
Buon Natale a tutti.
 
BRuno