SA0057:小数点以下の桁数が失われる可能性
小数点以下の桁数が失われる可能性のある命令を決定します。
理由:次の種類のコードの一部: diTemp2 := 1 rTemp1 := TO_REAL(diTemp2 / DINT#2)
誤解を招く可能性があります。このコード行の作成者または読者は、分割が次のようになると想定する場合があります。 REAL
-実行された操作と結果はこの場合になります REAL#0.5
であること。ただし、これは当てはまりません。演算は整数演算として実行され、結果は次のようになります。 REAL
キャストと rTemp1
値を取得します REAL#0
。
これを回避するには、キャストを使用して操作が確実に実行されるようにします。 REAL
手術:
rTemp1 := TO_REAL(diTemp2) / REAL#2;
重要性:中
例 67. 例
PROGRAM PLC_PRG VAR rTemp1 : REAL; diTemp2 : DINT; liTemp3 : LINT; END_VAR
diTemp2 := diTemp2 + DINT#11; // SA0057 rTemp1 := DINT_TO_REAL(diTemp2 / DINT#3); rTemp1 := DINT_TO_REAL(diTemp2) / REAL#3.0; liTemp3 := liTemp3 + LINT#13; // SA0057 rTemp1 := LINT_TO_REAL(liTemp3 / LINT#7); rTemp1 := LINT_TO_REAL(liTemp3) / REAL#7.0;
での出力 メッセージ ビュー:
SA0057: 小数点以下の桁が失われる可能性があります