Rileva le dichiarazioni con una possibile perdita di cifre decimali.
Giustificazione: Un pezzo di codice del tipo seguente (diTemp2 := 1 rTemp1 := TO_REAL(diTemp2 / DINT#2)) può causare un'interpretazione errata. L'autore o il lettore di questa riga di codice
può supporre che la divisione venga eseguita come operazione REAL e in questo caso il risultato sarebbe REAL#0.5. Tuttavia, questo non è vero. È un'operazione di tipo intero. Il risultato viene
lanciato a REAL e rTemp1 ottiene il valore REAL#0. Per evitare ciò, utilizzare un cast per assicurarsi che l'operazione venga eseguita
come operazione REAL: rTemp1 := TO_REAL(diTemp2) / REAL#2.
Importanza: Medio
Esempio
PROGRAM PLC_PRG VAR rTemp1 : REAL; diTemp2 : DINT; liTemp3 : LINT; END_VAR diTemp2 := diTemp2 + DINT#11; rTemp1 := DINT_TO_REAL(diTemp2 / DINT#3); // SA0057 rTemp1 := DINT_TO_REAL(diTemp2) / REAL#3.0; liTemp3 := liTemp3 + LINT#13; rTemp1 := LINT_TO_REAL(liTemp3 / LINT#7); // SA0057 rTemp1 := LINT_TO_REAL(liTemp3) / REAL#7.0; --> SA0057: Possible loss of decimal places