Для относительно простых чисел, числовая точность достаточна для их точного представления. Например, 17,5 равно 17,5
Для более сложных операций с плавающей точкой, таких как
17.4999999999999982236431605997495353221893310546874 = 17.499999999999996447286321199499070644378662109375
17.4999999999999982236431605997495353221893310546875 = 17.5
Используя as_integer_ratio () для первого числа выше, можно получить (4925812092436479, 281474976710656)
, а поскольку (4925812092436479*2+1)/(2*281474976710656)
равно второму числу выше, становится очевидным, что разбиение между> = 17.5 и <17.5 равно 1 / (2 * 281474976710656) . </p>
Гарантируют ли стандарты python, что конкретное значение с плавающей точкой будет "связано" с указанным выше конкретным бином, или это зависит от реализации? Если есть гарантия, как это решается?
Для вышеизложенного я использовал python 3.5.6, но меня интересует общий ответ для python 3.x, если он существует.