Add two numbers.
variant add <variant:Var1> <variant:Var2>
Name | Type | Comment |
---|---|---|
arg1 | variant | The first number to be added. |
arg2 | variant | The second number to be added. |
add
. See Algebra of variables of dissimilar types.
The sum of arg1 and arg2, in the data type of arg1.
float f set f 50.1 echo <zs:add f 20>
… the output of which is written to the event log by echo as:
70.1
If the type of arg2 is different to that of arg1, arg2 will be typecast to the type of arg1. Thus, in certain circumstances, the the result of add
will be different if the argument order is swapped, even if the values are unchanged.
For example, consider the case of adding a float (f = 4.5) and an integer (i = 4):
float f int i set f 4.5 set i 4 echo <zs: add f i> // 'f' goes first, so comparing as floats echo <zs: add i f> // 'i' goes first, so comparing as integers
The result of this code is:
8.5 8
In the first addition in the above script (echo <add f i>
), the first argument is a float (f = 4.5) so the second argument (i = 4) will be typecast to a float with the value of 4.0. The sum of 4.5 and 4.0 is 8.5.
In the second addition in the above script (echo <add i f>
), the first argument is a integer (i = 4) so the second argument (f = 4.5) will be typecast to an integer with the value of 4. The sum of 4 and 4 is 8.
The moral of the story is: when performing algebraic operations on variables, consider the type of the variables when deciding the argument order.