Точность вычислений в скрипте C WinCC
Posted: Sun Dec 24, 2017 8:46 pm
Здравствуйте.
Народ, столкнулся с проблемой, которая очевидно решена давно, но ответ сам пока не нашел. Есть тег 32bit float, значение которого нужно уменьшать на 0.01 при нажатии кнопки. Накропал маленький скрипт. При компиляции редактор предупреждает о некой потере точности, но компилирует. Сразу этому не придал значение, а зря. При нескольких нажатиях на вышеуказанную кнопку в седьмом разряде после запятой вылазит 1 и это позволяет выполниться условию if. Как по уму с этим борются? Я новичек.
Текст скрипта:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
float value,minvalue;
value=GetTagFloat("Zad_Am1");
minvalue=GetTagFloat("Fam_min");
if (value>minvalue)
{
value=value-0.01;
SetTagFloat("Zad_Am1",value);
}
Народ, столкнулся с проблемой, которая очевидно решена давно, но ответ сам пока не нашел. Есть тег 32bit float, значение которого нужно уменьшать на 0.01 при нажатии кнопки. Накропал маленький скрипт. При компиляции редактор предупреждает о некой потере точности, но компилирует. Сразу этому не придал значение, а зря. При нескольких нажатиях на вышеуказанную кнопку в седьмом разряде после запятой вылазит 1 и это позволяет выполниться условию if. Как по уму с этим борются? Я новичек.
Текст скрипта:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
float value,minvalue;
value=GetTagFloat("Zad_Am1");
minvalue=GetTagFloat("Fam_min");
if (value>minvalue)
{
value=value-0.01;
SetTagFloat("Zad_Am1",value);
}