Круглый к положительной бесконечности означает, что результат округления никогда не меньше аргумента.
Круглый к отрицательной бесконечности означает, что результат округления никогда не превышает аргумент.
Раунд к ближайшему, связь даже означает, что результат округления иногда больше, иногда меньше (и иногда равен) аргументу.
Завершает значение +0.100101110
до шести мест после двоичной точки приведут к
+0.100110 // for round towards positive infinity
+0.100101 // for round towards negative infinity
+0.100110 // for round to nearest, ties to even
Значения расщепляется
+0.100101 110
в биты должны храниться и биты определения результата из округления.
Поскольку значение положительное, а определяющие биты не все равны 0, округление до положительной бесконечности означает приращение сохраненной части на 1 ULP.
Поскольку значение положительное, округление до отрицательной бесконечности просто отбрасывает последние бит.
Поскольку первый отсечной бит равен 1, и не все дополнительные биты равны 0, то значение +0.100110
ближе к оригиналу, чем +0.100101
, так что результат +0.100110
.
Более поучительный для ближайшего/четного случая был бы пример или два, где у нас действительно есть галстук, например. круглый +0.1001
до трех бит после двоичной точки:
+0.100 1 // halfway between +0.100 and +0.101
здесь, правило говорит, чтобы выбрать один с последним битом 0 (последним битом даже) два ближайших значений, т.е. +0.100
и это значение округляется в стороне отрицательного бесконечность. Но округление +0.1011
будет округлено к положительной бесконечности, потому что на этот раз большее из двух ближайших значений имеет последний бит 0.
Это не ясно; пожалуйста, вы можете добавить конкретный пример к вашему вопросу. –
есть. +0.100101110 Мне нужно округлить это до положительной бесконечности, используя самые правые 3 бита. – melMPLS