Detecta enunciados con posible pérdida de decimales
Justificación: Un fragmento de código del tipo siguiente (diTemp2 := 1 rTemp1 := TO_REAL(diTemp2 / DINT#2)) puede provocar una interpretación errónea. El autor o lector de esta línea de código
puede suponer que la división se realizaría como una operación REAL, y en este caso el resultado sería REAL#0.5. Sin embargo, esto no es cierto. Es una operación con números enteros. El resultado
se asigna a REAL y rTemp1 obtiene el valor REAL#0. Para evitarlo, utilice un reparto para asegurarse de que la operación se realiza
como una operación de REAL: rTemp1 := TO_REAL(diTemp2) / REAL#2.
Importancia: Medio
Ejemplo
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