Wednesday, October 12, 2016

Problem docell reports different results than expected when an if structure is being used , docell






+

Problema: DOCELL riporta i risultati differenti del previsto quando si utilizza una struttura IF In alcuni casi, un ciclo DOCELL può riferire risultati diversi rispetto a quanto previsto. Causa C'è un problema con se le strutture interne DOCELL loop. Di tanto in tanto, i risultati intermedi vengono internamente calcolati come in virgola mobile quando dovrebbero essere intero. Soluzione o Soluzione Soluzioni alternative sono: - garantire che tutti i risultati intermedi sono effettivamente intero (vedi soluzione 1). - Evitare di utilizzare l'operatore di assegnazione temporanea (vedi soluzione 2). - Evitare di usare DOCELL del tutto. Se non c'è un operatore cumulativo in uso, gli stessi risultati possono quasi sempre essere ottenuti utilizzando i gestori di rete normali e loop. Inoltre, le prestazioni DOCELL è generalmente inferiore a quello che può essere ottenuto mediante le normali procedure. Un esempio che dimostra la questione è la seguente: Ingresso: aa 10 10 10 10 10 5 5 5 10 10 0 0 5 10 10 n N 5 5 5 10 10 5 5 5 Ingresso: BB 50 50 50 50 50 0 0 0 50 50 0 0 0 0 0 n n 0 0 0 50 50 0 0 0 Griglia: docell. tmp11: = aa * (bb / 100). if (0 & gt; 1) OUT11 = 999. altro OUT11 = tmp11. fine griglia: Griglia: tmp11 stampa 5 5 5 5 5 0 0 0 5 5 0 0 0 0 0 n n 0 0 0 5 5 0 0 0 L'aspettativa sarebbe che tutte le cellule di uscita sarebbero 0 o ND. Soluzione 1: Se la funzione INT viene eseguita sulla divisione come segue, i risultati attesi sono: Griglia: docell. tmp22: = aa * int (bb / 100). if (0 & gt; 1) out22 = 999. altro out22 = tmp22. fine griglia: Griglia: stampa out22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 n n 0 0 0 0 0 0 0 0 Soluzione 2: Se l'operatore uguale (=) viene usato invece, i risultati attesi sono: Griglia: docell. tmp33 = aa * (bb / 100). if (0 & gt; 1) out33 = 999. altro out33 = tmp33. fine griglia: Griglia: stampa out33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 n n 0 0 0 0 0 0 0 0 Ultima modifica: 2016/05/05 Identificativo articolo: 000005035




No comments:

Post a Comment