I'd go with Kobi's answer, unless it's possible you could have more than 13 digits to start with, in which case you might need to do something like this (warning: I have not even attempted to make this efficient; surely there are ways it could be optimized if necessary):
public static string ToTrimmedString(this decimal value, int numDigits)
{
    // First figure out how many decimal places are to the left
    // of the decimal point.
    int digitsToLeft = 0;
    // This should be safe since you said all inputs will be <= 100M anyway.
    int temp = decimal.ToInt32(Math.Truncate(value));
    while (temp > 0)
    {
        ++digitsToLeft;
        temp /= 10;
    }
    // Then simply display however many decimal places remain "available,"
    // taking the value to the left of the decimal point and the decimal point
    // itself into account. (If negative numbers are a possibility, you'd want
    // to subtract another digit for negative values to allow for the '-' sign.)
    return value.ToString("#." + new string('0', numDigits - digitsToLeft - 1));
}
Example inputs/output:
Input                     Output
---------------------------------------
100                       100.000000000
1.232487                  1.23248700000
1.3290435309439872321     1.32904353094
100.320148109932888473    100.320148110
0.000383849080819849081   .000383849081
0.0                       .000000000000