La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Sono un insegnante, e per correggere le verifiche ho predisposto una funzione che approssima il valore decimale al tipico formato di voto. La funzione opera correttamente ma con qualche malfunzionamento occasionale. Ho fatto qualche test per capire il problema ed ho riscontrato una stranezza sulla funzione TRONCA e sulla funzione INT, o magari ho un problema con il notebook !
Supponiamo di mettere nella cella A1 un valore decimale, se nella cella B1 mettiamo la funzione =A1-TRONCA(A1) otteniamo la parte decimale del numero, possiamo usare la funzione INT() al posto di TRONCA() e il risultato non cambia.
La mia funzione si basa proprio sull'analisi della parte decimale del voto, andando caso per caso a trasformalo, ma nel fare i test mi sono accorto che proprio questa banale differenza =A1-TRONCA(A1) in alcuni casi NON funziona, ed in particolare nel caso in cui il valore in A1 è un valore intero.
Poiché questo valore è frutto di un calcolo pensavo ci fosse un problema di rappresentazione decimale, ma il calcolo non ha decimali residui, ho usato anche la notazione scientifica.
Se metto il valore manualmente il problema non si pone, ma se lo stesso valore è frutto di calcoli, in alcuni casi funziona ed in altri no. Ho realizzato un test facendo incrementare il voto da 0 a 10 con step di +0.1 ed in corrispondenza dei voti interi maggiori di 5 si presenta il malfunzionamento, mentre usando incrementi di +0.25 il problema non si pone.
A1=6 la funzione =A1-TRONCA(A1) dovrebbe fare zero, ma in alcuni casi restituisce 1
Allego un file excel perché mi rendo conto che quello che scrivo appare incredibile, al punto che penso che il problema possa essere il mio notebook (un hp i7 di soli 3 anni di vita). Nel file le celle evidenziate sono quelle che evidenziano il problema.
Se qualcuno mi conferma il problema anche sul proprio PC oppure ha idee dei motivi.
Grazie in anticipo
Per curiosità di qualcuno riporto anche la funzione totale di approssimazione:
=SE(E((D4-TRONCA(D4))>=0;(D4-TRONCA(D4))<=0,125);TRONCA(D4); SE(E((D4-TRONCA(D4))>0,125;(D4-TRONCA(D4))<=0,375);TRONCA(D4) & "+";SE(E((D4-TRONCA(D4))>0,375;(D4-TRONCA(D4))<=0,625);TRONCA(D4) & CARATT.UNI(189);SE(E((D4-TRONCA(D4))>0,625;(D4-TRONCA(D4))<=0,875);TRONCA(D4+1) & "-";TRONCA(D4+1)))))
il voto decimale, ad esempio 5.33, è nella cella D4
Ciao
Hai provato con la Funzione ARROTONDA(num;num_cifre) dove come num indichi il voto (la cella col voto decimale) e come num_cifre indichi 0 (zero) se non vuoi le cifre decimali.
Nota che il mezzo punto viene arrotondato alla cifra superiore.
Fai sapere. Ciao,
Mario
ciao
è l'eterno discorso dei decimali in excel
=+D61+0,1
non fa 6 per excel ma
5,99999999999999
basta aumentare i decimali per vedere il problema
Marius ti ha dato la soluzione
=ARROTONDA(+D61+0,1;2)
@marius44 Ti ringrazio, e grazie anche al suggerimento di @gianfranco55
risolvo facendo l'arrotondamento al voto alla terza cifra prima di sottoporlo al calcolo della differenza tra se stesso e la sua parte intera.
Ero a conoscenza del problema dei decimali di excel, ma sapevo che il problema si ponesse solo nelle operazioni di divisione e moltiplicazione, dove approssimazioni oltre alle cifre gestibili possono portare al manifestarsi del problema.
Del resto, anche nel caso che ho sottoposto il problema si pone solo quando la funzione =A1-TRONCA(A1) opera con un valore nella cella A1 superiore a 5 quando questo è ottenuto come somma di incrementi di 0,1
Sommando invece per incrementi di 0,25 il problema non appare. Quindi in linea generale non sembra neppure un comportamento prevedibile.
Poco male, grazie per i suggerimenti, proverò ad operare così inserendo un arrotondamento a 3 cifre nella cella del voto.
Ciao