Visual Basic. You really don't want to store integer data as a floating point number, as this will lead to a variety of problems with inaccuracy. Of course not. I was just trying to think of a way that earlier statement could be justified, that a Variant is slower with respect to a Double than it is to a Long :-) I would really hope MS had designed the Variant type so that it could store both an integer value and a floating-point value at the same time. It's interesting to consider how other languages solve this problem. Perl variables, for instance, contain separate IV, NV, PV (integer, numeric, pointer value) slots, and there's a bunch of flags to indicate which slots contain valid values, whether the IV is actually unsigned, etc. Variants can hold almost any type of data, including objects. In VB6 you should almost never use Variants unless there are specific reasons why you need to (e.g. you are writing a COM component that needs to be called late-bound and that has by-reference parameters). Not only is the overhead excessive, unless you specifically convert the variants to a particular type in your code then you have no control over how the runtime treats them when doing calculations and comparisons etc. The decision as to which numeric data type you should be based on the business logic, not performance. If you only need to store integers that will fit in 4 bytes use Long (Int is not really