Add float rounding to CH usage events

What does this MR do and why?

Adds rounding to float number because timestamp.to_f isn't always precise:

[1] pry(main)> Time.current.floor(3).to_f
=> 1744108603.598
[2] pry(main)> Time.current.floor(3).to_f
=> 1744108604.7180002
[3] pry(main)> Time.current.floor(3).to_f
=> 1744108606.48
[4] pry(main)> Time.current.floor(3).to_f
=> 1744108607.548
[5] pry(main)> Time.current.floor(3).to_f
=> 1744108608.4129999

As a result we still have records with microsecond values in ClickHouse. No user facing changes.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #528661

Merge request reports

Loading