English
Instant Developer Foundation Documentazione
  • Note di rilascio
  • Instant Developer Foundation
  • Versione 24.0.9300
  • Correzioni

JAVA: Somma valori tabella IMDB e arrotondamenti

copia link

Descrizione del difetto

In un caso molto specifico la somma di valori contenuti in tabelle IMDB poteva fornire un valore diverso se si utilizzava una query o si effettuava un ciclo FOR-EACH-ROW sui dati per comporre la somma.

Il malfunzionamento si manfiestava solo in tecnologia Java, e solo in questo caso particolare:

  1. tecnologia Java
  2. tabella IMDB con dati di tipo FLOAT
  3. si effettuava la somma tramite query SELECT:
      select into variables (found variable)
        set MySum = sum(Campo)
      from 
        TabellaIMDB // master table
    
  4. si effettuava la somma tramite ciclo FOR-EACH-ROW:
    MySum = 0
     
    for each row (readonly)
    {
      select
        Campo1NomeOggetto = Campo
      from 
        TabellaIMDB // master table
       
      MySum = MySum + Campo1NomeOggetto
    }
    
In questo caso particolare, per esempio, se i valori sommati erano 10.5, 2.52 e 3.15 si ottevano 2 valori differenti. Il calcolo al punto 3 forniva il valore 16.169999999999998, mentre il calcolo al punto 4 forniva il valore 16.17.

Effetti del malfunzionamento

  • La somma calcolata tramite query SELECT forniva un risultato diverso da quello ottenuto sommando i dati tramite ciclo FOR-EACH-ROW. La differenza era molto piccola ed era dovuta al fatto che si effettuava la somma di valori FLOAT all'interno di variabili DECIMAL.
  • Il malfunzionamento riguardava l'istruzione
      select into variables (found variable)
        set MySum = sum(Campo)
      from 
        TabellaIMDB // master table
    
    e si manifestava solo se il tipo di dati sommati (FLOAT) non coincideva con il tipo di dato della variabile MySum (DECIMAL) dell'esempio.

Soluzioni

Non sono disponibili workaround per le versioni precedenti.

Funzionalità interessate

Il calcolo di somme tramite query su tabelle IMDB.

Note

  • Malfunzionamento relativo alla richiesta di assistenza 001946-2023.

Ultima modifica: 11/06/2025 / Validità: da 24.0.9300

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum