English
Instant Developer Foundation Documentazione
  • Note di rilascio
  • Instant Developer Foundation
  • Versioni precedenti
  • Versione 7.1.3300
  • Correzioni

ALL: Funzione ROUND

copia link

Descrizione 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).
Stranamente questo comportamento è quello di default se si utilizzando le funzioni native ROUND in C# e i valori consigliati per la funzione SETSCALE in JAVA, funzione che viene usata per calcolare la ROUND quanto il tipo di dato è CURRENCY o DECIMAL.

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

Vedi anche

  • Round (funzione)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum