[Bug] Fix the converting error that caused by edge case of float value
In the process of entity_initializer-v25.01, when ran the USA, an unexpected error occured in HeightAndFloorspaceRule as:
File "<string>", line 121, in get_stories_and_floorspace_from_osm
ValueError: cannot convert float NAN to integer
This error is caused by edge case nan: In Python, the float type has nan. nan stands for "not a number" and is defined by the IEEE 754 floating-point standard (NaN - Wikipedia). If the tag value is "NAN", the function float() will parse and return the float("NAN") as float('nan'). Since the type of nan is still float, the calculation operation such as + will still have the nan as outcome: float('nan') + 1 = float('nan').
The float('nan') gets error when ceiling the number of stories as stories = ceil(stories) since the ceil() only accept number float type.
Furthermore, besides of nan type, inf and -inf are also float type, stand for the infinity. The return of float("INF") is also a float as float('inf'), which will lead to the similar error as what nan has.
This error should be fixed in the class function tag_to_float() to address the OSM tags.
Finished USA EI by using the modified code.