Differenze tra le versioni di "Arrotondamento di un numero con virgola mobile"

Da Gambas-it.org - Wikipedia.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
Se vogliamo ottenere un arrotondamento di un numero con la virgola, possiamo utilizzare la funzione ''Round()'' oppure la funzione ''Ceil()''.
 
Se vogliamo ottenere un arrotondamento di un numero con la virgola, possiamo utilizzare la funzione ''Round()'' oppure la funzione ''Ceil()''.
 
 
  
 
==Uso della funzione ''Round()''==
 
==Uso della funzione ''Round()''==
La funzione '''[http://www.gambas-it.org/wiki/index.php?title=Round Round()]''' arrotonda un numero al più vicino intero a seconda di alcuni casi.
+
La funzione '''[https://gambaswiki.org/wiki/lang/round?l=it Round()]''' arrotonda un numero al più vicino intero a seconda di alcuni casi.
 
 
  
 
===Arrotondamento all'unità ''superiore''===
 
===Arrotondamento all'unità ''superiore''===
Riga 14: Riga 11:
 
   Dim f As Float
 
   Dim f As Float
 
   
 
   
  f = <FONT color=#B22222>Round</font>(87326.5)
+
  f = <FONT color=#B22222>Round</font>(87326.5)
 
   
 
   
  Print f
+
  Print f
 
   
 
   
 
  '''End'''
 
  '''End'''
 
 
In console avremo:
 
In console avremo:
 
<BR>8732'''7'''
 
<BR>8732'''7'''
 
  
 
===Arrotondamento all'unità ''inferiore''===
 
===Arrotondamento all'unità ''inferiore''===
Riga 31: Riga 26:
 
   Dim f As Float
 
   Dim f As Float
 
    
 
    
  f = <FONT color=#B22222>Round</font>(87326.4999999)
+
  f = <FONT color=#B22222>Round</font>(87326.4999999)
 
   
 
   
  Print f
+
  Print f
 
   
 
   
 
  '''End'''
 
  '''End'''
 
 
In console avremo:
 
In console avremo:
 
<BR>8732'''6'''
 
<BR>8732'''6'''
  
  
 
+
==Uso della funzione "Ceil()"==
==Uso della funzione ''Ceil()''==
+
E', poi, possibile molto semplicemente utilizzare anche la funzione aritmetica '''[https://gambaswiki.org/wiki/lang/ceil?l=it Ceil()]''': se il numero è <SPAN style="text-decoration:underline">positivo</span> e contiene dei decimali, allora tale funzione restituirà un numero arrotondato all'unità intera superiore.
E', poi, possibile molto semplicemente utilizzare anche la funzione aritmetica '''Ceil()''': se il numero è <SPAN style="text-decoration:underline">positivo</span> e contiene dei decimali, allora tale funzione restituirà un numero arrotondato all'unità intera superiore.
 
 
  '''Public''' Sub Main()   
 
  '''Public''' Sub Main()   
 
   
 
   
Riga 51: Riga 44:
 
in console si avrà il risultato:
 
in console si avrà il risultato:
 
<BR>2
 
<BR>2
 
  
  
 
==Arrotondamento senza funzioni specifiche di arrotondamento==
 
==Arrotondamento senza funzioni specifiche di arrotondamento==
E' possibile effettuare l'arrotondamento senza alcuna funzione appositamente dedicata all'arrotondamento, ma solo utilizzando la funzione ''Fix()'' per eliminare la parte decimale.
+
E' possibile effettuare l'arrotondamento senza alcuna funzione appositamente dedicata all'arrotondamento, ma solo utilizzando la funzione "[https://gambaswiki.org/wiki/lang/fix?l=it Fix()]" per eliminare la parte decimale.
  
 
Mostriamo un esempio, nel quale il valore sarà arrotondato all'unità superiore, qualora il decimale a destra della virgola sia almeno pari a .5:
 
Mostriamo un esempio, nel quale il valore sarà arrotondato all'unità superiore, qualora il decimale a destra della virgola sia almeno pari a .5:
Riga 63: Riga 55:
 
   Dim i As Integer
 
   Dim i As Integer
 
    
 
    
  i = Fix(f + 0.5)
+
  i = Fix(f + 0.5)
 
   
 
   
  Print i
+
  Print i
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 73: Riga 65:
 
E' possibile, volendo, utilizzare alcune funzioni esterne appartenenti alla libreria ''libm.so.6''.
 
E' possibile, volendo, utilizzare alcune funzioni esterne appartenenti alla libreria ''libm.so.6''.
  
 +
===Uso della funzione esterna "ceil()"===
 +
La funzione esterna "ceil()" restituisce il più piccolo valore integrale non inferiore a X. Il suo comportamento è identico a quello della funzione nativa di Gambas "Ceil()".
  
===Uso della funzione esterna ''ceil( )''===
+
Poiché il suo nome è analogo al nome della funzione "Ceil()" nativa di Gambas, sarà necessario utilizzare per la funzione esterna un nome fittizio, e richiamare poi con ''Exec'' nella definizione in ''Extern'' il suo vero nome. <SUP>&#091;[[#Note|nota1]]&#093;</sup>
La funzione esterna ''ceil( )'' restituisce il più piccolo valore integrale non inferiore a X. Il suo comportamento è identico a quello della funzione nativa di Gambas ''Ceil( )''.
 
 
 
Poiché il suo nome è analogo al nome della funzione ''Ceil( )'' nativa di Gambas, sarà necessario utilizzare per la funzione esterna un nome fittizio, e richiamare poi con ''Exec'' nella definizione in ''Extern'' il suo vero nome.
 
 
 
  
 
Mostriamo un esempio pratico:
 
Mostriamo un esempio pratico:
 
  Library "libm:6"
 
  Library "libm:6"
 
   
 
   
  <FONT Color=gray> ' ''ceil (_Mdouble_ __x)''
+
  <FONT Color=gray>' ''ceil (_Mdouble_ __x)''
 
  ' ''Smallest integral value not less than X.''</font>
 
  ' ''Smallest integral value not less than X.''</font>
 
  Private Extern ceil_C(__x As Float) As Float Exec "ceil"
 
  Private Extern ceil_C(__x As Float) As Float Exec "ceil"
Riga 92: Riga 82:
 
   Dim f As Float
 
   Dim f As Float
 
    
 
    
    f = ceil_C(1.49)
+
  f = ceil_C(1.49)
    Print f
+
  Print f
 
    
 
    
 
  '''End'''
 
  '''End'''
  
 +
===Uso della funzione esterna "round()"===
 +
La funzione esterna "round()" arrotonda un numero in virgola mobile al valore integrale più vicino.
  
===Uso della funzione esterna ''round( )''===
+
Poiché il suo nome è analogo al nome della funzione "Round()" nativa di Gambas, sarà necessario utilizzare per la funzione esterna un nome fittizio, e richiamare poi con ''Exec'' nella definizione in ''Extern'' il suo vero nome.
La funzione esterna ''round( )'' arrotonda un numero in virgola mobile al valore integrale più vicino.
 
 
 
Poiché il suo nome è analogo al nome della funzione ''round( )'' nativa di Gambas, sarà necessario utilizzare per la funzione esterna un nome fittizio, e richiamare poi con ''Exec'' nella definizione in ''Extern'' il suo vero nome.
 
 
 
  
 
Mostriamo un esempio pratico:
 
Mostriamo un esempio pratico:
 
  Library "libm:6"
 
  Library "libm:6"
 
   
 
   
  <FONT Color=gray> ' ''round (_Mdouble_ __x)''
+
  <FONT Color=gray>' ''round (_Mdouble_ __x)''
 
  ' ''Round X to nearest integral value, rounding halfway cases away from zero.''</font>
 
  ' ''Round X to nearest integral value, rounding halfway cases away from zero.''</font>
 
  Private Extern round_C(__x As Float) As Float Exec "round"
 
  Private Extern round_C(__x As Float) As Float Exec "round"
Riga 116: Riga 104:
 
   Dim f As Float
 
   Dim f As Float
 
    
 
    
    f = round_C(1.49)
+
  f = round_C(1.49)
    Print f
+
  Print f
 
      
 
      
    f = round_C(1.5)
+
  f = round_C(1.5)
    Print f
+
  Print f
 
    
 
    
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
=Note=
 +
[1] Al riguardo vedere anche la seguente pagina:
 +
<BR>https://www.gambas-it.org/wiki/index.php/Extern:_richiamare_funzioni_esterne_a_Gambas#Uso_del_nome_di_una_funzione_gi.C3.A0_utilizzato_da_Gambas

Versione attuale delle 08:39, 1 giu 2023

Se vogliamo ottenere un arrotondamento di un numero con la virgola, possiamo utilizzare la funzione Round() oppure la funzione Ceil().

Uso della funzione Round()

La funzione Round() arrotonda un numero al più vicino intero a seconda di alcuni casi.

Arrotondamento all'unità superiore

Se il primo numero decimale è uguale o supriore a 5, si avrà un arrotondamento all'unità superiore:

Public Sub Button1_Click()

 Dim f As Float

 f = Round(87326.5)

 Print f

End

In console avremo:
87327

Arrotondamento all'unità inferiore

Se il primo numero decimale è inferiore a 5, si avrà un arrotondamento all'unità inferiore:

Public Sub Button1_Click()

 Dim f As Float
 
 f = Round(87326.4999999)

 Print f

End

In console avremo:
87326


Uso della funzione "Ceil()"

E', poi, possibile molto semplicemente utilizzare anche la funzione aritmetica Ceil(): se il numero è positivo e contiene dei decimali, allora tale funzione restituirà un numero arrotondato all'unità intera superiore.

Public Sub Main()  

 Print Ceil(1.49)  
     
End

in console si avrà il risultato:
2


Arrotondamento senza funzioni specifiche di arrotondamento

E' possibile effettuare l'arrotondamento senza alcuna funzione appositamente dedicata all'arrotondamento, ma solo utilizzando la funzione "Fix()" per eliminare la parte decimale.

Mostriamo un esempio, nel quale il valore sarà arrotondato all'unità superiore, qualora il decimale a destra della virgola sia almeno pari a .5:

Public Sub Main()
 
 Dim f As Float = 4.543
 Dim i As Integer
  
 i = Fix(f + 0.5)

 Print i
 
End


Uso delle funzioni esterne della libreria libm.so.6

E' possibile, volendo, utilizzare alcune funzioni esterne appartenenti alla libreria libm.so.6.

Uso della funzione esterna "ceil()"

La funzione esterna "ceil()" restituisce il più piccolo valore integrale non inferiore a X. Il suo comportamento è identico a quello della funzione nativa di Gambas "Ceil()".

Poiché il suo nome è analogo al nome della funzione "Ceil()" nativa di Gambas, sarà necessario utilizzare per la funzione esterna un nome fittizio, e richiamare poi con Exec nella definizione in Extern il suo vero nome. [nota1]

Mostriamo un esempio pratico:

Library "libm:6"

' ceil (_Mdouble_ __x)
' Smallest integral value not less than X.
Private Extern ceil_C(__x As Float) As Float Exec "ceil"


Public Sub Main()
 
 Dim f As Float
 
 f = ceil_C(1.49)
 Print f
  
End

Uso della funzione esterna "round()"

La funzione esterna "round()" arrotonda un numero in virgola mobile al valore integrale più vicino.

Poiché il suo nome è analogo al nome della funzione "Round()" nativa di Gambas, sarà necessario utilizzare per la funzione esterna un nome fittizio, e richiamare poi con Exec nella definizione in Extern il suo vero nome.

Mostriamo un esempio pratico:

Library "libm:6"

' round (_Mdouble_ __x)
' Round X to nearest integral value, rounding halfway cases away from zero.
Private Extern round_C(__x As Float) As Float Exec "round"


Public Sub Main()
 
 Dim f As Float
 
  f = round_C(1.49)
  Print f
   
  f = round_C(1.5)
  Print f
  
End


Note

[1] Al riguardo vedere anche la seguente pagina:
https://www.gambas-it.org/wiki/index.php/Extern:_richiamare_funzioni_esterne_a_Gambas#Uso_del_nome_di_una_funzione_gi.C3.A0_utilizzato_da_Gambas