You have a misunderstanding on how mirc works.
1) There is no need for this terribly slow alias (nested while loops in mirc = slow when the number of items is fairly large), since we already demonstrated the way to do a numeric sorting, and that's /filter with the -t and -u switches.
2) Even if there was no other way of doing a numeric sort, those $int()'s aren't necessary. The final comparison (with >) is done on the evaluated content of $int(): whenever the > operator (internally) is used for comparing two items, it does not know where those items came from, ie whether they were a result of the evaluation of $int() or $round() or a %variable etc. Apparently, all mirc identifiers/variables are evaluated starting from the deepest ones and all the intermediate results are passed as strings, until all evaluation is done. Then mirc executes the command that used them (be it an /if command-statement, or another mirc /command), without remembering where the (evaluated) parameters came from: they are all strings internally.
Apart from that, in an "if (v1 > v2)" statement, the > operator treats v1 and v2 as numbers, if they are. Only if they are non-numbers does mirc treat them as text and does a "sort" comparison. Obviously, at some point, the two parameters around the > operator (which are always strings resulting from the evaluation of identifiers/variables) are converted to numbers internally. All the scripter notices (and cares about) is that the script operator > treats v1 and v2 as numbers, whether they have decimals or not.