When you wire an output to a destination that has a different numeric representation, LabVIEW converts the data according to the following rules:
Signed or unsigned integer to floating-point numberConversion is exact, except for long integers to single-precision floating-point numbers. In this case, LabVIEW reduces the precision from 32 bits to 24 bits.
Floating-point number to signed or unsigned integerLabVIEW moves out-of-range values to the minimum or maximum value of the integer. For example, if you convert a negative floating-point number to an unsigned integer, all the negative values are converted to the maximum value. In most integer objects, such as the iteration terminal of a For Loop, LabVIEW rounds floating-point numbers.
Enums are considered unsigned integers. For example, if you convert 1, a floating-point number, to an unsigned integer, the value is coerced into the range of the enum. If the range of an enum is 0 to 25, and 1 is converted to an enum, the value is converted to 25, which is the largest value in the range of the enum.
Integer to integerLabVIEW does not move out-of-range values to the minimum or maximum value of an integer. If the source is smaller than the destination, LabVIEW extends the sign of a signed source and places zeros in the extra bits of an unsigned source. If the source is larger than the destination, LabVIEW copies only the least significant bits of the value.
If you wire together two terminals that are different data types, LabVIEW converts one of the terminals to the same representation as the other terminal. LabVIEW chooses the representation that uses more bits. If the number of bits is the same, it chooses unsigned over signed.
Coercion dots appear on block diagram nodes to alert you that you wired two different data types together. The dot means that LabVIEW converted the value passed into the node to a different representation. Coercion dots can cause a VI to use more memory and increase its run time. Try to keep data types consistent in your VIs.