Condividi:        

excel risultati curiosi con decimali

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

excel risultati curiosi con decimali

Postdi wallace&gromit » 03/08/12 09:49

Ciao, vi sottopongo uno strano caso:
volevo scrivere una funzione che deve estrarre i decimali da un numero e moltiplicarli per 100.
Mi sembrava una cosa abbastanza banale e ho scritto questo:
Codice: Seleziona tutto
Function Decimali(num)
num2 = Int((num - Int(num)) * 100)
Decimali = num2
End Function
i risultati sono alquanto sorprendenti.
Per alcuni valori (con una logica che non capisco) ottengo il valore atteso -1.
Per esempio 3.8 mi restituisce 79, ma 0.8 restituisce 80 (corretto). Chi sa svelare il mistero?
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Sponsor
 

Re: excel risultati curiosi con decimali

Postdi Flash30005 » 03/08/12 10:45

Cambia Nome alla funzione es.:
Codice: Seleziona tutto
Function TrovaD(numT)
NumD = (numT - Int(numT)) * 100
TrovaD = NumD
End Function


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel risultati curiosi con decimali

Postdi wallace&gromit » 03/08/12 10:52

per un attimo mi sono illuso... ma non è così semplice.
Nella tua funzione manca l'arrotondamento finale: a me serve un numero intero. È proprio in quel passaggio che salta qualcosa, anche modificando la tua.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: excel risultati curiosi con decimali

Postdi scossa » 03/08/12 11:08

wallace&gromit ha scritto:Ciao, vi sottopongo uno strano caso:
volevo scrivere una funzione che deve estrarre i decimali da un numero e moltiplicarli per 100.
Mi sembrava una cosa abbastanza banale e ho scritto questo:
Codice: Seleziona tutto
Function Decimali(num)
num2 = Int((num - Int(num)) * 100)
Decimali = num2
End Function
i risultati sono alquanto sorprendenti.
Per alcuni valori (con una logica che non capisco) ottengo il valore atteso -1.
Per esempio 3.8 mi restituisce 79, ma 0.8 restituisce 80 (corretto). Chi sa svelare il mistero?


E' un problema di "precisione", dichiara la variabile come Currency e risolvi:
Codice: Seleziona tutto
Function Decimali(num As Currency) As Integer
  Decimali = Int((num - Int(num)) * 100)
End Function
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: excel risultati curiosi con decimali

Postdi Flash30005 » 03/08/12 12:35

wallace&gromit ha scritto:...
Nella tua funzione manca l'arrotondamento finale: a me serve un numero intero.


:roll:
Ha ragione Scossa ma per l'arrotondamento devi considerare che si arrotonda in eccesso se supera lo 0,5 altrimenti l'arrotondamento è in difetto
quindi utilizzando la funzione di Scossa puoi fare così:
Codice: Seleziona tutto
Function Decimali(num As Currency) As Integer
Decimali = (num - Int(num)) * 100
End Function


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel risultati curiosi con decimali

Postdi Anthony47 » 03/08/12 13:28

Vedi i messaggi di scossa e Flash, sopra.
Se poi coi negativi viene fuori nuovamente qualcosa di strano allora prova Fix invece di Int.

E farlo invece con formula?
Codice: Seleziona tutto
=INT(RESTO(ASS(C9);1)*100)


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel risultati curiosi con decimali

Postdi wallace&gromit » 03/08/12 13:41

grazie mille a tutti, funziona la soluzione di scossa.
Poi una volta ci sediamo un attimo e cerchiamo di capire come cavolo fa excel a sbagliare l'approssimazione su 1.9 (non gli chiedevo mica P greco!)
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: excel risultati curiosi con decimali

Postdi wallace&gromit » 03/08/12 14:40

non avevo tenuto in debita considerazione le considerazioni di flash (forse perchè non hai inserito il codice più aggiornato), comunque la mia versione definitiva e funzionante è questa
Codice: Seleziona tutto
Function Decimali(num As Currency)
num2 = (num - Int(num)) * 100
Decimali = Int(num2 + 0.5)
End Function
grazie ancora a tutti. Per Anthony: è solo il primo passo di una macro più complessa, quindi mi serviva il VBA.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: excel risultati curiosi con decimali

Postdi Flash30005 » 03/08/12 22:49

wallace&gromit ha scritto:comunque la mia versione definitiva e funzionante è questa


Quale differenza hai tra questi due codici?

Codice: Seleziona tutto
Function Decimali(num As Currency)
num2 = (num - Int(num)) * 100
Decimali = Int(num2 + 0.5)
End Function


Codice: Seleziona tutto
Function Decimali(num As Currency) As Integer
Decimali = (num - Int(num)) * 100
End Function

:roll:

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel risultati curiosi con decimali

Postdi wallace&gromit » 06/08/12 07:16

effettivamente il risultato è uguale, scusa Flash, non avevo aggiornato la tua macro nel mio file.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21


Torna a Applicazioni Office Windows


Topic correlati a "excel risultati curiosi con decimali":


Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti