In an expression with two operands, both of type decimal, the return will be of type decimal. This is true regardless if these operands are both literals suffixed with "M", or variables declared as type Decimal, or one of each.
In the example below, three multiplication statements are executed. Note that although these statements differ in syntax, they are semantically similiar: they all multiply the decimal values 6.43 and 0.05 and return the result as a decimal type. So the answer to your question about the Rate variable is: just declare it a decimal type and you're set - no "M" required.
// Sample C# code ...
decimal Number1;
decimal Number2;
decimal Number3;
decimal Number4;
decimal Rate;
// First operand is decimal variable. Second operand is decimal literal.
Number1 = 6.43M;
Number2 = Number1 * 0.05M;
Console.WriteLine(Number2);
// Both operands are decimal variables.
Rate = 0.05M;
Number3 = Number1 * Rate;
Console.WriteLine(Number3);
// Both operands are decimal literals.
Number4 = 6.43M * 0.05M;
Console.WriteLine(Number4);