|
|
|
Странные числа на выводе программы!
|
|||
|---|---|---|---|
|
#18+
Вопрос: почему больше одного знака после точки? Код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вывод: 5.0 4.9 4.800000000000001 4.700000000000001 4.600000000000001 4.500000000000002 4.400000000000002 4.3000000000000025 4.200000000000003 4.100000000000003 4.0000000000000036 3.9000000000000035 3.8000000000000034 3.7000000000000033 3.600000000000003 3.500000000000003 3.400000000000003 3.300000000000003 3.200000000000003 3.1000000000000028 3.0000000000000027 2.9000000000000026 2.8000000000000025 2.7000000000000024 2.6000000000000023 2.500000000000002 2.400000000000002 2.300000000000002 2.200000000000002 2.100000000000002 2.0000000000000018 1.9000000000000017 1.8000000000000016 1.7000000000000015 1.6000000000000014 1.5000000000000013 1.4000000000000012 1.3000000000000012 1.200000000000001 1.100000000000001 1.0000000000000009 0.9000000000000009 0.8000000000000009 0.700000000000001 0.600000000000001 0.500000000000001 0.400000000000001 0.30000000000000104 0.20000000000000104 0.10000000000000103 1.0269562977782698E-15 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:13 |
|
||
|
Странные числа на выводе программы!
|
|||
|---|---|---|---|
|
#18+
Dmitry56 Вопрос: почему больше одного знака после точки? Потому что многие десятичные дроби не имеют конечного представления в двоичном виде. Ищите вводные статьи о том как дроби хранятся в двоичной системе. http://vestikinc.narod.ru/AB/ni_bin.htm http://school.dtv.su/sistemyi-perevod-drobnyih-chisel/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:18 |
|
||
|
Странные числа на выводе программы!
|
|||
|---|---|---|---|
|
#18+
Dmitry56, у вас к гуглу доступ закрыли? :) В общем виде ответ на поставленный выше вопрос будет звучать примерно так: «Подобные ошибки связанны с внутренним двоичным (binary) представлением чисел. Подобно тому, как в десятичной системе нельзя точно представить результат деления 1/3, так и в двоичной системе невозможно точно представить 1/10. Если вам нужно исключить ошибки округления, следует использовать класс BigDecimal». https://habrahabr.ru/post/219595/ и еще много подобных ссылок можно найти там же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:20 |
|
||
|
Странные числа на выводе программы!
|
|||
|---|---|---|---|
|
#18+
Кстати с BigDecimal тоже не все так просто, например если из 2.00 вычесть 1.1, то мы не получим 0.9, а получим 0.89999999... и еще кучу цифер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:22 |
|
||
|
Странные числа на выводе программы!
|
|||
|---|---|---|---|
|
#18+
NixicКстати с BigDecimal тоже не все так просто, например если из 2.00 вычесть 1.1, то мы не получим 0.9, а получим 0.89999999... и еще кучу циферрешается округлением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:27 |
|
||
|
Странные числа на выводе программы!
|
|||
|---|---|---|---|
|
#18+
UsmanNixicКстати с BigDecimal тоже не все так просто, например если из 2.00 вычесть 1.1, то мы не получим 0.9, а получим 0.89999999... и еще кучу циферрешается округлением решается правильным способом создания BigDecimal Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:29 |
|
||
|
Странные числа на выводе программы!
|
|||
|---|---|---|---|
|
#18+
vslUsmanпропущено... решается округлением решается правильным способом создания BigDecimal Код: java 1. 2. 3. 4. +128 Да, есть такое, когда проблемы double переносятся в BigDecimal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:48 |
|
||
|
Странные числа на выводе программы!
|
|||
|---|---|---|---|
|
#18+
Usmanкогда проблемы double переносятся в BigDecimal Напомнило 19016384 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 14:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39239124&tid=2124044]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 371ms |

| 0 / 0 |
