|
|
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
Если в C++ Builder 6.0 скомпилить программу с таким циклом: Код: plaintext 1. 2. 3. Но в цикле Код: plaintext 1. Может кто-нибудь объяснить почему и можно ли как-нибудь этого избежать? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 17:45 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
zalто почему-то последний шаг (при x=1.0) не будет выполнен. Потому что не надо использовать для счетчика плавающий тип! При операциях с плавающими типами существует погрешность (обычно в размере единицы последнего разряда). т.е. в цикле Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 17:52 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
zaldouble x; for(x=0.5;x<=1.0;x+=0.01)дабл весьма неточный тип Код: plaintext Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 17:54 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
Карабас Барабасдабл весьма неточный тип он весьма точный ;) просто он двоичный, а не десятичный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 00:23 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
sraider Карабас Барабасдабл весьма неточный тип он весьма точный ;) просто он двоичный, а не десятичный. Вы хоть понимаете о чем идет речь ? double - НЕТОЧНЫЙ по определению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 09:05 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
Когда уже запретят применять = <= >= с числами с плавающей точкой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 10:44 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
MasterZivКогда уже запретят применять = <= >= с числами с плавающей точкой ?Не вижу ничего криминального, если понимать, что делаешь :) А вобще, компилятор мог бы и варнинг выдавать в таких случаях Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2006, 10:52 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Вы хоть понимаете о чем идет речь ? double - НЕТОЧНЫЙ по определению Я весьма понимаю о чем идет речь. А Вы представляете как хранятся числа в double? Что значит "неточный по определению"? покажите мне такое определение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2006, 16:32 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
sraiderЧто значит "неточный по определению"? покажите мне такое определение...о чем ты споришь ??? ну напиши вот это: Код: plaintext 1. 2. 3. PS: неточно хранится ! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2006, 16:37 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
Карабас БарабасPS: неточно хранится ! я бы сказал, неточно выполняются операции, в т.ч. преобразования в/из другие системы счисления. например, 0.1 нельзя точно преобразовать в тип double, т.к. получается бесконечная дробь и невлезающая часть будет просто отброшена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2006, 17:04 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
miksoftя бы сказал, неточно выполняются операции, в т.ч. преобразования в/из другие системы счисленияда, так будет точнее :) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2006, 17:13 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
паняслась sraiderЯ весьма понимаю о чем идет речь. А Вы представляете как хранятся числа в double? да ЗНАЮ (а не представляю), но оглашать здесь ... не до сук ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2006, 17:23 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас sraiderЧто значит "неточный по определению"? покажите мне такое определение...о чем ты споришь ??? ну напиши вот это: Код: plaintext 1. 2. 3. PS: неточно хранится ! Posted via ActualForum NNTP Server 1.3 Ты бы еще число Pi в тип int попытался запихнуть и сказал что оно там неточно хранится :) Так и здесь - пытаешься число 0.0001 (которое не раскладывается по степеням двойки) запихнуть в двоичный дробный тип. Все равно что 1/3 попробовать записать десятичной дробью - десятичных разрядов не хватит. Попробуй прогнать свой цикл с числами типа 0.5, 0.25, 0.75 или 0.125 - все будет точно, так как они раскладываются по степеням двойки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 21:22 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
И о чем вы спорите? Обо всем, только не по существу. zal , в таких случаях просто не используй операцию <= Проще всего твоя проблема решается так Код: plaintext 1. 2. И это будет верно для любого приращения переменной цикла в рамках типа double, если это приращение не будет превышать погрешность. Эмпирическим путем получил, что еще при приращении 10^-13 работает, при 10^-14 уже нет. Почему так? Ответ кроется в реализации представления чисел с плавающей точкой. Никто не мешает тебе создать к примеру свой класс, обрабатывающий многобайтные числа, и таким образом увеличить точность вычислений до необходимой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 01:20 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
sraiderПопробуй прогнать свой цикл с числами типа 0.5, 0.25, 0.75 или 0.125 - все будет точно, так как они раскладываются по степеням двойки.Ты МНЕ это говоришь ? Хе-хе топик читал, или так, вырвал кусок ? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 06:53 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
sraiderПопробуй прогнать свой цикл с числами типа 0.5, 0.25, 0.75 или 0.125 - все будет точно, так как они раскладываются по степеням двойки. Вот уж точно, computation skill сюда не хочешь за $4000 ? Помедитируй над этим: 1E100-1 внимательно, а потом скажи, уж не происходит ли здесь ПОТЕРЯ ТОЧНОСТИ ??? В качестве дополнительного задания, ответь скока раз отработает цикл: for (double i=1e100;i>0;i=i-1); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 08:59 |
|
||
|
счетчик в цикле типа double
|
|||
|---|---|---|---|
|
#18+
Здесь как раз модератор и нужен.:) Достал этот топик гз. С математикой что ли сложно? MSDN Double precision values with double type have 8 bytes. The format is similar to the float format except that it has an 11-bit excess-1023 exponent and a 52-bit mantissa, plus the implied high-order 1 bit. This format gives a range of approximately 1.7E–308 to 1.7E+308 for type double. Microsoft Specific —> The double type contains 64 bits: 1 for sign, 11 for the exponent, and 52 for the mantissa. Its range is +/–1.7E308 with at least 15 digits of precision. END Microsoft Specific END Microsoft Specific ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 13:30 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33578413&tid=2031839]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 334ms |

| 0 / 0 |
