= Numeric operations == Arithmetic operators The usual arithmetic operators are provided. [source] .Example .... nix-repl> 1 + 2 # addition 3 nix-repl> 5 - 3 # subtraction 2 nix-repl> 3 * 4 # multiplication 12 nix-repl> 6 / 2 # division 3 nix-repl> -1 # negation -1 .... [IMPORTANT] ==== As mentioned in <<_variables>>, you can get unexpected results when you omit spaces around operators. Consider the following example. [source] .Example .... nix-repl> 6/2 /home/amy/codeberg/nix-book/6/2 .... What happened? Let's use the `:t` command to find out the type of the expression. [source] .Example .... nix-repl> :t 6/2 a path .... If an expression can be interpreted as a path, Nix will do so. This is useful, because paths are _far_ more commonly used in Nix expressions than arithmetic operators. In this case, Nix interpreted `6/2` as a relative path from the current directory, which in the above example was `/home/amy/codeberg/nix-book`. Adding a space after the `/` operator produces the expected result. [source] .Example .... nix-repl> 6/ 2 3 .... To avoid surprises and improve readability, I prefer to use spaces before and after all operators. ==== == Floating-point calculations Numbers without a decimal point are assumed to be integers. To ensure that a number is interpreted as a floating-point value, add a decimal point. [source] .Example .... nix-repl> :t 5 an integer nix-repl> :t 5.0 a float nix-repl> :t 5. a float .... In the example below, the first expression results in integer division (rounding down), while the second produces a floating-point result. [source] .Example .... nix-repl> 5 / 3 1 nix-repl> 5.0 / 3 1.66667 ....