The weight matrix, when initialised, is made up of floats only. Integers are limiting, as floats can represent a much wider range of values with a greater degree of accuracy. (Answer from google)
The values, even if they were integers, won’t stay integers for long anyways, as while calculating gradients and stuff, they will eventually turn into floats anyways, during the back propagation process.

Integer values are not differentiable in PyTorch as they are discrete. Of course floating point values are also limited by their dtype but we treat them as continuous values.
Examples use Integer values as these are easier to understand in manual computations.

For a layman like me, it was very confusing as most of the online notes have the weights in integers, not floats.

On this note, I realised that I have made an error in the title of my post. It should be kernel SAME AS filter. Weights are the values inside the kernel or filter.

Yes. Your explanation is clear. It makes sense now. Using integers to illustrate the calculations will make it easier for a layman like me to visualise and understand.