Skip to main content

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;

での出力 メッセージ ビュー:

  • sa_icon_message.png SA0057: 小数点以下の桁が失われる可能性があります