As TH notes in his answer, the macros from
pgfmath are not expandable. In fact, I rewrote the
l3fp package from scratch a year ago (well, it took me many months) to provide an expandable version of what many other packages provide. Writing expandable code means in particular that it is not possible to store results in variables, and of course that makes it very tricky to parse expressions, or compute trigonometric functions. Long story short, we can now perform computations expandably, hence the following works.
\cs_set_eq:NN \eval \fp_eval:n
First make the programming command
\fp_eval:n available at document level, as
\eval, then use it in the argument of
\fp_eval:n command takes one argument, evaluates it as a floating point expression, and produces a decimal number, so after expansion the argument of
1.333333333333333mm (16 significant figures). The
l3fp package also provides other functions, for instance
\fp_to_scientific:n, which would give things like
\fp_to_tl:n, which produces a scientific representation for very large or very small numbers, but otherwise a decimal representation. Another goal of
l3fp is to follow the (decimal) IEEE 854 (now absorbed into 754) standard. A major omission is the absence of support for subnormal numbers.