Просмотр полной версии : Операция вычетания Codesys 2.3
Уважаемые знатоки не могу понять
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/
Как выйти из этой ситуации если точность нужна до десятых ?
Всем Спасибо !
Заменил операцию 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;
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot