ALL: Funzione ROUND
copia linkDescrizione del difetto
Utilizzando la funzione ROUND in applicazioni Java o C#, se l'argomento era equidistante rispetto al tipo di arrotondamento richiesto, si ottenevano risultati non previsti come ad esempio:
- ROUND(52.50, 0) = 52 (!), mentre
- ROUND(53.50, 0) = 54 (OK).
Siccome questo comportamento non è quello naturalmente atteso, è stata cambiata l'implementazione della funzione ROUND in modo che l'arrotondamento di un valore equidistante avvenga sempre verso l'alto, tenendo conto del valore assoluto del numero.
Effetti del malfunzionamento
L'arrotondamento di numeri DECIMAL, CURRENCY o FLOAT in applicazioni C# e di numeri DECIMAL o CURRENCY in applicazioni JAVA avveniva verso il numero pari più vicino, invece che secondo le regoli "classiche".
Soluzioni
Questa modifica può influire sul comportamento delle applicazioni compilate con versioni precedenti. Si consiglia di usare il comando di menù contestuale Trova dove usato dalla funzione ROUND della libreria Client (Standard Library -> Math -> Round), in modo da verificarne l'utilizzo e controllare se il comportamento voluto era quello attuale.
Notare che in applicazioni Java il problema non si manifestava se il numero arrotondato era di tipo float o era stato convertito in float.
Funzionalità interessate
Uso della funzione ROUND in applicazioni Java o C#.
Ultima modifica: 25/10/2016 / Validità: da 7.1.3300