|
|
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
не знаю как в питоне, а в msvc 2.675 - во внутреннем представлении double - 0x4005666666666666, а это на самую малость меньше, чем 2.675 по хорошему 0x4005666666666667 должно быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:43 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
Dima TeNoseвсё потому, что i - double. и что там в самом конце после запятой - неизвестно. хотите стабильных результатов - обрубайте после запятой до нужного знака, а затем округляйте. Не поможет. По другому надо погрешность учитывать, недавно обсуждали 19934637 19942973 19931261 отвечу тут. это всё неправильно. правильно в цикле i=1 делить i/10 до тех пор, пока комп не выдаст равный предыдущему результат. вот это будет реальная погрешность вычислений конкретного процессора и конкретного компилятора. и вот именно ее и надо использовать при сравнениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:46 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
eNoseDima TВсе степени двойки (в т.ч. отрицательные) преобразуются в double без погрешностей. на бумаге - да. в компьютере - нет. ну не все конечно, а от -1022 до 1023 степени по крайней мере (денормализованное представление не рассматриваю) в компьютере представляются (IEEE754 - уточню на всякий) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:51 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
eNoseи что там в самом конце после запятой - неизвестно. известно и детерминировано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:52 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
ИзопропилeNoseпропущено... на бумаге - да. в компьютере - нет. ну не все конечно, а от -1022 до 1023 степени по крайней мере (денормализованное представление не рассматриваю) в компьютере представляются (IEEE754 - уточню на всякий) вы путаете операцию присвоения с операцией деления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:52 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
ИзопропилeNoseи что там в самом конце после запятой - неизвестно. известно и детерминировано 19946387 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:52 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
eNoseсмотри сам Посмотрел. Поправь первую строчку Код: python 1. иначе целочисленное деление и i = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:54 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
Dima TeNoseсмотри сам Посмотрел. Поправь первую строчку Код: python 1. иначе целочисленное деление и i = 0 тогда я тоже непонимаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 11:58 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
eNoseвы путаете операцию присвоения с операцией деления а что, 2 n где n в диапазоне -1022 до 1023 зависит от того - константой задали или подсчитали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 12:00 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
а, ну понятно всё. обозначаем нужное деление for i in range(0, 10): print("round({0}) = {1}".format(i/2., round(i/2.)) ) round(0.0) = 0.0 round(0.5) = 1.0 round(1.0) = 1.0 round(1.5) = 2.0 round(2.0) = 2.0 round(2.5) = 3.0 round(3.0) = 3.0 round(3.5) = 4.0 round(4.0) = 4.0 round(4.5) = 5.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 12:01 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
ИзопропилeNoseвы путаете операцию присвоения с операцией деления а что, 2 n где n в диапазоне -1022 до 1023 зависит от того - константой задали или подсчитали? в общем случае да зависит как минимум от компилятора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 12:02 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
eNoseтогда я тоже непонимаю Тоже запутался. Потом понял, ты не тот питон выбрал, надо третий http://rextester.com/l/python3_online_compiler Разные питоны по разному округляют. Странный ЯП этот питон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 12:16 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
Dima TВсе степени двойки (в т.ч. отрицательные) преобразуются в double без погрешностей. речь таки о литерале. eNoseзависит как минимум от компилятора это что ж такое нужно наговнокодить в компиляторе чтоб цикл криво отработал Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 12:18 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
какой то вброс на 2-м питоне получится не round(1.0) = 1.0 , а round(1) = 1.0 т.е. если неправильное деление, то непонятно почему в левой части оно правильное если добавить Код: python 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. т.е. всё пучком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 12:29 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
Загуглил эту тему, нашел забавное объяснение https://pythonworld.ru/osnovy/okruglenie.html Тут есть одна особенность, о которой нужно знать, и о которой часто забывают. Со школы многие привыкли, что, когда (N + 1) знак = 5, а последующие знаки равны нулю, округление производится всегда в большую по модулю сторону. Однако, как видно из примеров, в Python это не так. Здесь используется так называемое "Банковское округление", то есть округление к ближайшему чётному. На практике это оказывается не так уж и важно, например: Код: sql 1. 2. Что-то не так, правда? На самом деле, всё именно так, как и задумывалось. Просто из-за проблем с точностью чисел с плавающей точкой это число чуть больше, чем 2.85, а потому округляется до 2.9. Похоже действительно делали банковское но не доделали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 12:29 |
|
||
|
округление в Питоне: функция round():
|
|||
|---|---|---|---|
|
#18+
Код: python 1. 2. 3. 4. 5. 6. на выходе - 0x4005666666666666 , что чуток меньше чем 2.675 никакой мистики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:36 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39356721&tid=1340556]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 359ms |

| 0 / 0 |
