decimal ToString formatting which gives at least 1 digit, no upper limit

.net, c#, tostring

Solution

Use `ToString("0.0###########################")`.

Some notes:,

- There are 27 `#`s in there, as the `decimal` structure can accommodate precision up to 28 decimal places.

- The `0` custom specifier will cause a digit to always be displayed, even if the value is 0.

- The `#` custom specifier only displays a value if the digit is zero and all of the digits to the right/left of that digit (depending on what side of the decimal point you are on) are zero.

- You will need to insert as many `#` after the first `0` to the right of the decimal point to accommodate the length of all the values you will pass to `ToString`, if you will only have precision to 10 decimal places, then you need nine `#` (since you have the first decimal place to the right handled by `0`)

For more information, see the section of MSDN titled "Custom Numeric Format Strings".

Problem

How to format a `decimal` in C# with at least one digit after the decimal point, but not a fixed upper limit if specified more than 1 digit after the decimal point: ``` 5 -> "5.0" 5.1 -> "5.1" 5.122 -> "5.122" 10.235544545 -> "10.235544545" ```

Original source