I want to write a function that limits the string representation of a number to a specific number of decimals (in this example: 3 decimals). However, I also want to remove any trailing zeros at the end. So the following numbers should be transformed into the corresponding strings:

```
12.34567 -> "12.345"
10.50 -> "10.5"
12.00 -> "12"
0 -> "0"
```

I have looked into string patterns, and found out that the pattern `"%.3f"`

formats a number to have 3 decimals. However, that leaves trailing zeros at the end, which I want to avoid.

I could still use the pattern and then iteratively check if the last character of the string is a 0 and remove it, but then that leaves the dot behind. I could check for both dots and zeros, but then that would transform the number `50.00`

into `"5"`

, unless I add an additional check to stop after the first encounter of a dot. Either way, the resulting function would look oddly complex for a seemingly simple problem.

I am wondering, is there a better way of going about this?