PsychoPy and PsychoJS don’t do any conversion or rounding. If you specify the stimulus onset/duration/offset in units of time then the script (which you can read by outputting the code into either flavour) tries to determine on every screen refresh period whether it should try to squeeze in one more frame. That has the advantage that, if frames have been dropped due to lack of rendering power (meaning the frame period appears to be double the duration it should have been for that frame) then this is handled seamlessly.
But I would strongly recommend for brief stimuli that you don’t specify your stimulus in units of time, especially if you know that duration can’t be achieved on your monitor because that decision can give unpredictable results. See also Online timing: frames or time in seconds?