Why the last timestamps is a float instead of a integer?

When I extract the timestamps with this command (mkvextract.exe test_video.mkv timestamps_v2 0:timestamps.txt) with this mkv file, I get this file:

# timestamp format v2
3
45
86
...
20815
20856.708333

From what I understand, the last timestamps correspond to the last frame timestamps + it’s duration.

But, why is it a float number and not a integer like all the other timestamps?

The TimestampScale is 1000000, so I thought all the timestamps would be a integer in milliseconds.

I don’t believe this is a bug, but it is just that my comprehension of the timestamps isn’t good.

Edit:
If I run ffprobe -select_streams 0 -show_entries packet test_video.mkv -print_format json, I can see that the last frame duration_time is 41 ms instead of 41.708333, but I guess that ffprobe is simply truncating the result?

        {
            "pts": 20815,
            "pts_time": "20.815000",
            "best_effort_timestamp": 20815,
            "best_effort_timestamp_time": "20.815000",
            "duration": 41,
            "duration_time": "0.041000",
        }