Snaps value to step, if T is not float, then explicit casts are used and it may cause data loss
See Implementation
Snaps value to step, if T is not float, then explicit casts are used and it may cause data loss