It's not including only values from 8.0 to 9.9. It's also not comparing ASCII values.
It's ordering the values as a dictionary would do (but with more characters) and the order will vary depending on the collation used.
Basically, it will look for anything that would come after that value if the values were entries on a dictionary.
DECLARE @Sample TABLE(
result_text varchar(10)
);
INSERT INTO @Sample
VALUES( '5.3'),
( '7.9'),
( '7.95'),
( '8.6'),
( '15.7'),
( '88.3'),
( 'N/A');
SELECT *
FROM @Sample
WHERE result_text > '7.9%';