[This is preliminary documentation and subject to change.]
MOF supports the following types of numeric values:
| Data type | Automation type | Description | 
| Sint8 | VT_I2 | Signed 8-bit integer | 
| Sint16 | VT_I2 | Signed 16-bit integer | 
| Sint32 | VT_I4 | Signed 32-bit integer | 
| Sint64 | VT_BSTR | Signed 64-bit integer in string form. Hexadecimal or decimal format according to ANSI C rules. | 
| Real32 | VT_R4 | IEEE 4-byte floating-point | 
| Real64 | VT_R8 | IEEE 8-byte floating-point | 
| Uint8 | VT_UI1 | Unsigned 8-bit integer | 
| Uint16 | VT_I4 | Unsigned 16-bit integer | 
| Uint32 | VT_I4 | Unsigned 32-bit integer | 
| Uint64 | VT_BSTR | Unsigned 64-bit integer in string form. Hexadecimal or decimal format according to ANSI C rules. | 
Note 64-bit integers must be encoded as string because Automation does not support a 64-bit integral type.
Automation types do not always correspond in bit size to MOF data types. For example, VT_I4 is used to return an Uint16 value. This is because of sign extension problems. If VT_I2 was used instead of VT_I4, 65,536 would appear to be the value -1, causing a number of type and range problems.
Since Automation does support an unsigned 8 bit type, VT_UI1, no change in representation is required. The Uint32 type is represented as VT_I4 because there is no larger integer type to contain it.
Long constants are integer values that are declared using a simple series of digits with an optional negative sign. The long constant may not exceed the size of the variable that is declared to hold it. Some examples of long constants are 1000 and -12310.
Hexadecimal, binary, and octal constants are also supported:
val = 65;                        // Decimal
val = 0x41;                    // Hex (0x prefix)
val = 0101;                    // Octal (leading zero)
val = 1000001B;                // Binary (trailing B)
Binary constants have a series of 1 and 0 digits, with a "b" or "B" suffix to indicate that the value is binary.
Floating point constants can be used to represent scientific notation as well as fractions:
3.14
-3.14
-1.2778E+02
The following class and instance declarations illustrate how to use each of the numeric data types to set properties:
class NumericDataClass
{
    uint8            Duint8;
    SInt8            Dchar;
    UInt16               Dtword;
    Sint16               Dinst16;
    UInt32               DDword;
    Sint32               Dinst1;
    Sint32               Dinst2;
    Sint32               Dinst3;
    Sint32               Dinst4;
    Sint32               Dinst5;
    Real32           Dfloat;
    Real64               Ddouble1;
    Real64               Ddouble2;
}
instance of NumericDataClass
{
    Duint8   =  122;
    Dchar    = -128;
    Dtword   =  30;
    Dinst16  = -1445;
    Ddword   =  6987777;
    Dinst1   = -455589;
    Dinst2   =  23;
    Dinst3   =  03;                // base 8
    Dinst4   =  0xFe;                // base 16
    Dinst5   =  11b;                // base 2
    Dfloat   =  3.1478;
    Ddouble1 =  99987.3654;
    Ddouble2 =  2.3e-2;
}