Works for me on the latest v9, see attached screenshot. Are you sure your price field is the only order field you have, and that you're on the latest v9? There have been sorting bugs in the past, and sources/catalogues.php is the main file that needs to be up-to-date.
My best guess is that you're on an older version with a sorting bug that forces it into non-DB sorting, which would likely be doing a string sort rather than an integer sort.
But I checked the code carefully, and I don't think this could happen on the latest code.
I believe it's labelled 'Integer'. However, you'll need to make it as a new field then delete the old one, as it can't switch underlying database types (it can switch between equivalently-stored types only).
(Click to enlarge)
#2336 - [ocPortal 9]Catalogs Don't Sort Correctly
My best guess is that you're on an older version with a sorting bug that forces it into non-DB sorting, which would likely be doing a string sort rather than an integer sort.
But I checked the code carefully, and I don't think this could happen on the latest code.
(Click to enlarge)