Can sampling rate be a floating point number?
Forget sampling rate for a few seconds... Think about sampling period for a second, which is the time interval between two consecutive samples. This time can be an integer or any real number (as long as it’s positive, of course).
Sampling rate is simply the inverse of sampling period. Does it make more sense this way?
Yes, the sampling rate can be any number you want.
But you obviously would not get partial samples in the end, you just have to round down.
In your example the first sample is taken at \$ \frac{1}{15.5}s \$ = 64.5 ms and then at every multiple from that. This means you get your last sample at 6,966 s. That is the 108's sample. So at 7 s you still have taken only 108 samples. And then at 7,0305 s you get the next sample.
You can imagine the samples beeing taken in a way like this dirac comb:
If you stop sampling between 3T and 4T you do not have partial samples. You just round down. T is the inverse of the sample frequency, or in your case 64.5 ms.
Some things are always an integer. Samples are always integer. You can take 108 or 109 samples.
Sample rate can be a floating point number, or more generally a rational, or even a real.
You calculate the sample rate by dividing the number of samples (less one to get the number of periods between samples) by the time it takes to obtain those samples.
Generally a floating point number is an approximation to the real number you want. With double precision, it's a very good approximation, but it's usually inexact.
If you're given a sample rate, and a time, the product might be an exact integer, if the numbers are chosen carefully, but it probably won't be. It might be in error a small amount, due to the approximation of floating point representation. It might be in error a lot, because the source of your information chose very approximate numbers, or even made up the numbers to start with.