Numeric operations
When numeric values with different data types are used in a numeric operation, LotusScript converts the values to the same data type for evaluation.
In general, LotusScript converts to the higher data type, based on this list (lowest to highest): Byte, Integer, Long, Single, Double, Currency. For example, in an operation with one Integer operand and one Double operand, LotusScript converts the Integer value to a Double before evaluating the expression.
Specific rules for conversion in operations are detailed in the documentation of the individual operators.
Argument passing
When a numeric argument is passed by value to a procedure, LotusScript tries to convert the value if it is not the expected data type. If the value is too large, the operation generates an error.
When a numeric argument is passed by reference to a procedure, the data type of the reference must match that of the declared argument, unless the declared argument is Variant.
Variant variables
When a value is contained in a Variant variable, LotusScript tries to convert the value to a number or a string, depending on the context.
Data type conversion treats a value of one data type as though it were a value of a different data type or performs an operation on a value of one data type to produce a value of another data type. Some form of data type conversion is involved when you add two numbers of different data types together, print the hexadecimal representation of a decimal number as a string, or calculate a date/time value (by treating that value as though it were a number). You can perform a data type conversion explicitly with the functions that LotusScript provides, you can choose between the two methods of conversion, or LotusScript can perform the conversion automatically. For example:
Dim aString As String Dim aDouble As Double Dim aFloat As Currency Dim aVariantV As Variant aString$ = "123.45" aDouble# = 678.90 ' Explicitly convert a string to a Currency value. ' That is, assign the return value of the conversion ' function CCur, which takes a String argument, to a variable ' of type Currency. aFloat@ = CCur(aString$) Print aFloat@ ' Output: 123.45 ' Automatically convert a Double value ' to a Currency value by assignment. You ' could explicitly convert the value of ' aDouble# to a Currency value before ' assigning it to aFloat@. You might do ' this for the purposes of documentation. aFloat@ = aDouble# Print aFloat@
' Output: 678.9 ' Automatically convert a Variant value ' of type String to a Currency value by ' addition, and then convert the ' resulting Currency value to a value ' of type Double by assignment. You can make ' both of these conversions explicit if you want. aVariantV = aString$ aDouble# = aVariantV + aFloat@ Print aDouble# ' Output: 802.35
See Also