Arrotondare numeri decimali in numeri interi

di AlbertoL il
18 risposte

Ciao a tutti

vorrei arrotondare qualsiasi numero decimale in numero intero ma in eccesso

p.e.

0.1278 =1

1.1=2

Grazie

18 Risposte

  • Beh se il numero meno il suo intero è maggiore di 0 allora numero=interodelnumero+1

    Ma ti serve la logica, l'aritmetica o il vba?

  • 03/01/2025 - sihsandrea ha scritto:

    Beh se il numero meno il suo intero è maggiore di 0 allora numero=interodelnumero+1

    Ma ti serve la logica, l'aritmetica o il vba?

    ciao sihsandrea

    il vba

    grazie

  • http://www.allenbrowne.com/round.html

    Comunque con questa riga di codice dovresti ottenere quello che chiedi :

    int(TuoNumero+1)

    ovviamente se il numero di partenza è già un intero ... devi decidere cosa vuoi fare.

  • If x-int(x)>0 x=int(x)+1 endif

    Se ha decimali aggiunge l'unità altrimenti non fa niente e lascia x al suo valore che è già intero.

  • 03/01/2025 - sihsandrea ha scritto:

    If x-int(x)>0 x=x+1 endif

    Se ha decimali aggiunge l'unità altrimenti non fa niente e lascia x al suo valore che è già intero.

    if x-int(x) > 0 then
    	x=int(x) + 1
    endif
  • Ovviamente farai attenzione ai valori negativi...

    -4,5+(-4)=--8,5

    Quella che ti è stata data è solo una traccia.

    Usa il valore assoluto.

  • --8,5

    ???

  • Il VBA, se non ricordo male a memoria, mette a disposizione la funzione SGN(..) sicché basterebbe prendere int valore in somma con segno di sgn(valore).

    La premessa sarebbe che sommando 1 si Arrotonda sempre per eccesso sia positivi che negativi... -4 > -5...

    Nel caso però si voglia Arrotondare al "numero" assoluto più grande intero...

    ValArrInt=Int(Valore+sgn(Valore))

    Ovviamente se l'arrotonfamento va gestito alla cifra richiesta si deve gestire il moltiplicatore, ma a quel punto serve gestire il decimal e non Integer.

    Spero di aver ricordato bene non ho il PC acceso.

  • 04/01/2025 - oregon ha scritto:

    --8,5

    ???

    La somma algebrica...

    X=4,5

    X-int(x)=4,5-4=0,5 incremento=1

    Ma se

    X=-4,5

    X-int(x)=-4,5-4=-8,5

    In questo caso incremento=-1

    In ogni caso la condizione if x-int(x)>0 non è vera per i negativi

    If x-intx<>0 allora è vera

    Usando il valore assoluto si ma resta da capire come arrotondare

    L'unità superiore nel caso x=4,5 diventa x=5

    Nel caso di x=-4,5 l'unià  superiore è -3

  • Sihandrea ...

    ti chiedevo solo cosa significasse

    -4,5+(-4)=--8,5

    Forse hai messo un segno meno in più 

    -4,5+(-4)=-8,5

  • E comunque attenzione perché

    int(-4.5) 

    vale -5

    mentre

    fix(-4.5)

    vale -4

  • 04/01/2025 - oregon ha scritto:

    Sihandrea ...

    ti chiedevo solo cosa significasse

    -4,5+(-4)=--8,5

    Forse hai messo un segno meno in più 

    -4,5+(-4)=-8,5

    Si scusa ho fatto confusione nella trasformazione mi sono mangiato il meno...

    Viene sempre negativo ma -0,5

    Sorry... Succede.

Devi accedere o registrarti per scrivere nel forum
18 risposte