Precision format specification .* for real number

The LRM says

The format specifications in Table 21-3 are used with real numbers (i.e., real and shortreal types) and have the full formatting capabilities available in the C language.

How can I get the .* spec to work?

E.g. in C I can do:

printf("%.*e\n",3,3.1234567);

which will print with 3 decimal numbers.

However the following fails:

$display("--> %.*e",5,3.12345678912);

What would be the right syntax in SystemVerilog?