Currently, Sesame float validation checks that an input float is legal by normalizing it. This normalization checks that the input mantissa is not higher than the max mantissa.
However, this does not take into account that by definition, xsd:float's lexical space is equal to that of xsd:double. Thus, "15000000000"^^xsd:float is legal, even if the number 1500000000 is higher than the max mantissa for a float (16777215).
The solution would be to convert internally, using a higher exponent, optionally losing precision according to definitions in https://en.wikipedia.org/wiki/Single_precision_floating-point_format.
Or perhaps by just converting to a float value in Java and seeing what happens