Olası ondalık basamak kaybı olan ifadeleri tespit eder
Gerekçe: Aşağıdaki türde bir kod parçası (diTemp2 := 1 rTemp1 := TO_REAL(diTemp2 / DINT#2)) yanlış yorumlamaya neden olabilir. Bu kod satırının yazarı veya okuyucusu, bölme
işleminin bir REAL işlemi olarak gerçekleştirileceğini ve bu durumda sonucun REAL#0.5 olacağını varsayabilir. Ancak bu doğru değildir. Bu bir tamsayı işlemidir. Sonuç
REAL 'a aktarılır ve rTemp1, REAL#0 değerini alır. Bunu önlemek için, işlemin bir REAL işlemi olarak gerçekleştirildiğinden emin olmak için bir döküm kullanın: rTemp1 := TO_REAL(diTemp2) / REAL#2.
Önemliymiş: Orta
Örnek
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
Ayrıca bakınız