Citect uses the IEEE 32 bit floating point
number format. The number 123456789 cannot be stored as an IEEE 32
bit floating point number exactly. The closest number which can be
stored is 123456792 because precision is lost during conversion to
an IEEE 32 bit floating point number. IEEE 32 bit floating point
numbers have a range of 3.4 * 1038 to 3.4 * 10+38 and allow 7
digit precision.
Rather than displaying a 15 digit real number, it is probably
better to use exponential notation for your display format and not
use more than 7 digits in the mantissa eg #s###### . In the above
example, the number 1.234567e + 008 would be entered and displayed
on the screen.
For further reference, the following is a list of the Data Types
that may be supported by your I/O device and their
ranges/precision.
BCD

Binary Coded
Decimal

2 bytes

0 to 9,999

BYTE

Byte

1 byte

0 to 255

DIGITAL

Digital

1 bit or 1 byte

0 or 1

INT

Integer

2 bytes

32,768 to
32,767

UINT

Unsigned Integer

2 bytes

0 to 65,535

LONG

Long Integer

4 bytes

2,147,483,648 to
2,147,483,647

LONGBCD

Long Binary Coded
Decimal

4 bytes

0 to 99,999,999

REAL

Floating Point

4 bytes

3.4E38 to 3.4E38 (max
of 7 digits of precision)

Local REAL*

Floating Point

8 bytes

1.79D308 to 1.79D+308
(max of 15 digits of precision)

* Local REAL Cicode variables and internal variables (used to
store intermediate values during a calculation Q3826) are 64bit. Other REAL variables (MODULE,
GLOBAL, and variable tags) are 32bit. This may cause issues
comparing values (Q3244) unless they are
rounded to 7 digits with the Round() function. OLE Date/Time values
will be accurate to the second with 64bit REALs, but will only be
accurate to the nearest 2min 49 sec with 32bit REAL variables
(Q4362).
