PDA

Просмотр полной версии : Операция вычетания Codesys 2.3



BSA
06.08.2021, 09:07
Уважаемые знатоки не могу понять
PROGRAM PLC_PRG
VAR
A:REAL:=100.1;
B:REAL:=100.0;
C: REAL;

END_VAR
C:=A-B;
почему С=9.999847e-002 а не 0.1.

Евгений Кислов
06.08.2021, 09:10
Уважаемые знатоки не могу понять
PROGRAM PLC_PRG
VAR
A:REAL:=100.1;
B:REAL:=100.0;
C: REAL;

END_VAR
C:=A-B;
почему С=9.999847e-002 а не 0.1.

Неплохая статья с примерами на тему вычислений с плавающей точкой:
https://docs.microsoft.com/ru-ru/office/troubleshoot/access/floating-calculations-info

Николай Суриков
06.08.2021, 09:14
https://habr.com/ru/post/309812/

BSA
06.08.2021, 09:28
Как выйти из этой ситуации если точность нужна до десятых ?

BSA
06.08.2021, 10:51
Всем Спасибо !
Заменил операцию C:=A-B ; на

C:= ( REAL_TO_DINT ( A *10 ) - REAL_TO_DINT ( B * 10 ) ) / 10.0 ;

kondor3000
06.08.2021, 19:50
Всем Спасибо !
Заменил операцию C:=A-B ; на

C:= ( REAL_TO_DINT ( A *10 ) - REAL_TO_DINT ( B * 10 ) ) / 10.0 ;

А так короче будет))



C:=REAL_TO_DINT((A-B)*10)/10.0;