Vai al contenuto

eRound, arrotonda i digits di un numero

Vai all indice del manuale di programmazione
Tipo: Funzione
Libreria LogicLab: eLLabMathsLib
Libreria Codesys: Non disponibile

Quando si opera con numeri float si utilizza sempre nei calcoli la massima risoluzione possibile, ecco perchè nel set di funzioni disponibili non esiste una funzione per l’arrotondamento dei numeri. Il valore viene troncato solo in visualizzazione per migliorarne la leggibilità, le funzioni SysVfprintf e SysVsnprintf permettono di definire quante cifre visualizzare (Segnaposti del formato printf).

Funzioni CEIL e FLOOR

In LogicLab esistono le funzioni CEIL e FLOOR per arrotondare un numero float ad numero intero più vicino.

  • La funzione CEIL (Dalla parola inglese ceiling che significa “soffitto”) ritorna il numero intero maggiore o uguale al numero reale. Viene utilizzata per arrotondare un numero fino al numero intero precedente.
  • La funzione FLOOR (Dalla parola inglese floor che significa “pavimento”) ritorna il numero intero minore o uguale al numero reale. Viene utilizzata per arrotondare un numero fino al numero intero successivo.

Esempi

RVar:=CEIL(1.95); //RVar=2.0
RVar:=CEIL(-1.27); //RVar-1.0
RVar:=FLOOR(1.95); //RVar=1.0
RVar:=FLOOR(-1.27); //RVar-2.0

Descrizione

Number (REAL) Numero da arrotondare.
Digits (USINT) Numero cifre dopo la virgola.

La funzione ritorna un REAL.

Immagine F eRound

Esempi

Come utilizzare gli esempi.
Nell’esempio sono eseguiti alcuni arrotondamenti.

LogicLab (Ptp179, ST_eRound)
PROGRAM ST_eRound
VAR
    RVar : ARRAY[0..5] OF REAL; (* Rounded variable *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_eRound"
// *****************************************************************************
// Executes some roundings.
// -----------------------------------------------------------------------------

    RVar[0]:=eRound(12.1234, 0); //RVar=12.0
    RVar[1]:=eRound(12.1234, 1); //RVar=12.1
    RVar[2]:=eRound(12.1234, 2); //RVar=12.12
    RVar[3]:=eRound(-12.1234, 0); //RVar=-12.0
    RVar[4]:=eRound(-12.1234, 1); //RVar=-12.1
    RVar[5]:=eRound(-12.1234, 2); //RVar=-12.12

// [End of file]
Was this article helpful?