Welcome to Kepware Server > How Do I... > Work with Non-Normalized Floating-Point Values
Work with Non-Normalized Floating-Point Values
Work with Non-Normalized Floating-Point Values
A non-normalized floating-point value is defined as Infinity, Not-a-Number (NaN), or as a Denormalized Number. For more information, refer to the table below.
 
Term
Definition
Non-Normalized Floating-Point Value
An IEEE-754 floating point number that is one of the following:
Negative Infinity to Quiet Negative NaN.
Positive Infinity to Quiet Positive NaN.
Negative Denormalized Values.
Positive Denormalized Values.
NaN
A number that exists outside of the range that may be represented as floating points. There are two types of NaN representations: Quiet and Signaling.*
Denormalized Number
A non-zero floating point number whose magnitude is less than the magnitude of the smallest IEEE 754-2008 value that may be represented for a Float or a Double.
For Floats, these include numbers between -1.175494E-38 and -1.401298E-45 (Negative Denormalized) and 1.401298E-45 and 1.175494E-38 (Positive Denormalized).
For Doubles, these include numbers between -2.225074E-308 and -4.940657E-324 (Negative Denormalized) and 4.940657E-324 and 2.225074E-308 (Positive Denormalized).
*A floating-point value that falls within the Signaling NaN range is converted to a Quiet NaN before being transferred to a client for Float and Double data types. To avoid this conversion, use a single element floating-point array.
 
Handling Non-Normalized IEEE-754 Floating-Point Values
Users can specify how a driver handles non-normalized IEEE-754 floating point values through the "Non-Normalized Value Should Be" property located in Channel Properties — Advanced. When Unmodified is selected, all values are transferred to clients without any modifications. For example, a driver that reads a 32-bit float value of 0xFF800000(-Infinity) transfers that value "as is" to the client. When Replaced with Zero is selected, certain values are replaced with zero before being transferred to clients. For example, a driver that reads a 32-bit float value of 0xFF800000(-Infinity) are replaced with zero before being transferred to a client.
 
   Note:  For information on which values are replaced with zero before being transferred to clients, refer to the tables below.
 
IEEE-754 Range for 32-Bit Floating-Point Values
Name
Hexadecimal Range
Decimal Range
Quiet -NaN
0xFFFFFFFF to 0xFFC00001
N/A
Quiet +NaN
0x7FC00000 to 7FFFFFFF
N/A
Indeterminate
0xFFC00000
N/A
Signaling -NaN
0xFFBFFFFF to 0xFF800001
N/A
Signaling +NaN
0x7F800001 to 7FBFFFFF
N/A
-Infinity (Negative Overflow)
0xFF800000
≤ -3.4028235677973365E+38
+Infinity (Positive Overflow)
0x7F800000
≥ 3.4028235677973365E+38
Negative Normalized-1.m × 2(e-127)
0xFF7FFFFF to 0x80800000
-3.4028234663852886E+38 to -1.1754943508222875E-38
Negative Denormalized-0.m × 2(-126)
0x807FFFFF to 0x80000001
-1.1754942106924411E-38 to -1.4012984643248170E-45 (-7.0064923216240862E-46)
Positive Denormalized0.m × 2(-126)
0x00000001 to 0x007FFFFF
(7.0064923216240862E-46) * 1.4012984643248170E-45 to 1.1754942106924411E-38
Positive Normalized1.m × 2(e-127)
0x00800000 to 0x7F7FFFFF
1.1754943508222875E-38 to 3.4028234663852886E+38
 
IEEE-754 Range for 64-Bit Floating-Point Values
Name
Hexadecimal Range
Decimal Range
Quiet -NaN
0xFFFFFFFFFFFFFFFF to 0xFFF8000000000001
N/A
Quiet +NaN
0x7FF8000000000000 to 0x7FFFFFFFFFFFFFFF
N/A
Indeterminate
0xFFF8000000000000
N/A
Signaling -NaN
0xFFF7FFFFFFFFFFFF to 0xFFF0000000000001
N/A
Signaling +NaN
0x7FF0000000000001 to 0x7FF7FFFFFFFFFFFF
N/A
-Infinity (Negative Overflow)
0xFFF0000000000000
≤ -1.7976931348623158E+308
+Infinity (Positive Overflow)
0x7FF0000000000000
≥ 1.7976931348623158E+308
Negative Normalized-1.m × 2(e-1023)
0xFFEFFFFFFFFFFFFF to 0x8010000000000000
-1.7976931348623157E+308 to -2.2250738585072014E-308
Negative Denormalized-0.m × 2(-1022)
0x800FFFFFFFFFFFFF to 0x8000000000000001
-2.2250738585072010E-308 to -4.9406564584124654E-324 (-2.4703282292062328E-324)
Positive Denormalized0.m × 2(-1022)
0x0000000000000001 to 0x000FFFFFFFFFFFFF
(2.4703282292062328E-324) * 4.9406564584124654E-324 to 2.2250738585072010E-308
Positive Normalized1.m × 2(e-1023)
0x0010000000000000 to 0x7FEFFFFFFFFFFFFF
2.2250738585072014E-308 to 1.7976931348623157E+308
 
Was this helpful?