On windows, with python 2.6, s = '%s' % float('inf') is 'inf', but s = '%f' % float('inf') is equal to '1.#INF'. This patch fixes the inconsistency, by using the code from floatobject.f format_float into stringobject.c formatfloat. I think it would be better to use the same underlying implementations for both functions, but it is not so easy, because format_float cannot fail (return void), whereas formatfloat can (return error code).