Re[6]: for с типом double
От: hattab  
Дата: 06.06.12 18:27
Оценка: 3 (1)
Здравствуйте, Deprivator, Вы писали:

D> LVV>В Паскале и его наследниках: Модула-2, Оберон, Компонентный паскаль...


D> так це ж разве языки?!


Самые лучшие
avalon 1.0rc3 build 428, zlib 1.2.3
Re[3]: for с типом double
От: msk78 Россия http://miccro.livejournal.com
Дата: 06.06.12 18:40
Оценка:
Здравствуйте, avpavlov, Вы писали:

A>Здравствуйте, msk78, Вы писали:


M>>Будет накапливаться погрешность. А это не всегда приемлемо.

M>>double d;
M>>for (d = 0.0; d < 1000.0; d += 0.01) ;
M>>Console.WriteLine(d);
M>>---------------------
M>>Output: d оказалось больше тысячи!
M>>1000,00999999924
M>>Press any key to continue . . .

A>В приведённом примере d обязано быть больше тысячи



A>
A>for (int i=0; i < 10; i++);
A>Console.WriteLine(d);
A>


A>тут, кстати, i окажется больше 10


Ага. Словил глюк.
Re[3]: for с типом double
От: fddima  
Дата: 06.06.12 18:43
Оценка:
Здравствуйте, koandrew, Вы писали:

D>>Бабло ни в коем случае нельзя хранить в double. Бабло надо хранить исключительно в unsigned long long.

K>В правильных языках для хранения бабла существуют типы данных с фиксированной точкой — вот в них бабло и надо хранить
Целочисленная арифметика граздо быстрее и эффективнее и в плане хранения тоже. Более того, никто не обещает, что в валюте "штука" вообще есть что-либо после запятой.
И терминальные устройство зачастую оперируют именно целым числом. Но вообще всё на самом деле зависит от задачи и то что с этими суммами делать. В оперднях может и имеет смысл использовать десятичные типы — а в онлайн процессингах — никак нет, проверено практикой.
Re[3]: for с типом double
От: pagid Россия  
Дата: 06.06.12 20:18
Оценка:
Здравствуйте, koandrew, Вы писали:

K>В правильных языках для хранения бабла существуют типы данных с фиксированной точкой — вот в них бабло и надо хранить

Только вот, как нужно считать проценты, любые банковские или по ставкам налогов, или просто делить, например, сумму на количество, всплывают всё те же проблемы, что и при использовании double.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re: for с типом double
От: Erop Россия  
Дата: 06.06.12 21:51
Оценка:
Здравствуйте, vog, Вы писали:

vog>
vog>int start()
vog>{
vog>  double p;
vog>  for(p=1.22;p<1.28;p+=0.01)
vog>  Alert("Докупился по цене", p ,"пипс");
vog>}


Для начала, все эти числа (1.22, 1.28, 0.01) в double непредставимы точно...

Так что суммы лучше просто в __int64 в центах выражать и не страдать
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: for с типом double
От: Erop Россия  
Дата: 06.06.12 21:52
Оценка: +1 :)
Здравствуйте, Ночной Смотрящий, Вы писали:

_>>Потому что существуют неточности. И если шаг 0.1 можно использовать, то 0.333333333333333 уже может привести к проблемам.


НС>Хинт — основание в double хранится в двоичном виде, и иррациональные числа для двоичной и десятичной системы не совпадают.


Иррациональные совпадают, конечно, но в целом мысль верная
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: for с типом double
От: quwy  
Дата: 06.06.12 22:03
Оценка: -2
Здравствуйте, Deprivator, Вы писали:

LVV>>В Паскале и его наследниках: Модула-2, Оберон, Компонентный паскаль...

D>так це ж разве языки?!
Они по крайней мере на машинный код в текстовом редакторе не похожи.
c-syntax must die
Re: for с типом double
От: Brutalix  
Дата: 06.06.12 22:19
Оценка:
Здравствуйте, vog, Вы писали:

vog> Человек вторую неделю осваивает программирование, поэтому ему непонятно. ... поэтому в Си сделали циклы с типом int. А вы что думаете?



vog>int start()




Чел mql4 штурмует, а ты его про си грузишь. нэ хорошо.
Re[5]: for с типом double
От: vog Россия [реклама удалена модератором]
Дата: 07.06.12 05:39
Оценка:
Здравствуйте, alzt, Вы писали:

A>Здравствуйте, andyag, Вы писали:


vog>>>В каком языке есть цикл for с типом double? Так, сам себе отвечаю — в Матлабе есть )) А еще?

A>>C, C++, C#, Java. Я бы скорее задал вопрос — в каком языке его нет.

A>В языках, которых нет циклов и типа дабл.


Я так понимаю, это про арифмометр имени Феликса Эдмундовича Дзержинского? Видел такой в детстве )))
[реклама удалена модератором]
Re[3]: for с типом double
От: Micht  
Дата: 07.06.12 07:27
Оценка: :)
Здравствуйте, koandrew, Вы писали:

K>Здравствуйте, Dair, Вы писали:


D>>Бабло ни в коем случае нельзя хранить в double. Бабло надо хранить исключительно в unsigned long long.


K>В правильных языках для хранения бабла существуют типы данных с фиксированной точкой — вот в них бабло и надо хранить


А ещё лучше бабло хранить не в языках, а в реальных ценностях типа нефти/золота
Re[7]: for с типом double
От: vdimas Россия  
Дата: 07.06.12 10:42
Оценка:
Здравствуйте, MxMsk, Вы писали:

B>>О, да.

B>>Написать в комментах, что для диапазона [1.22 ; 1.28) работает, а для других — тестируйте сами.
MM>Угу, я уже понял, что никто здесь в управляющих переменнах цикла никогда числа с плавающей запятой не использует.

Стараются не использовать, ес-но.

MM>А то не дай Бог, цикл превратиться в бесконечный.


Чаще всего набегает банальная погрешность. Размеров вплоть до нескольких шагов цикла.


MM>О! А еще по int-у тоже нельзя цикл гонять, вдруг за границу выйдем. Как страшно жить.


По инту можно и нужно. Диапазон надо знать, любая платформа дает максимальные и минимальные значения числовых типов. Гоняй масштабированный цикл на int, а внутри получай каждый раз из него double, и будет тебе щастье с минимумом погрешностей.
Re[4]: for с типом double
От: Ночной Смотрящий Россия  
Дата: 07.06.12 11:13
Оценка:
Здравствуйте, pagid, Вы писали:

P>Только вот, как нужно считать проценты, любые банковские или по ставкам налогов, или просто делить, например, сумму на количество, всплывают всё те же проблемы, что и при использовании double.


Не всплывают, если внимательно читать требования. Потому что куда девать ошибки округления там должно оговариваться.
Re[7]: for с типом double
От: Abalak США  
Дата: 07.06.12 14:06
Оценка: :)
Здравствуйте, LaptevVV, Вы писали:

А фамилии то какие знакомые, Чистяков, Ткачев
Re[6]: for с типом double
От: Abalak США  
Дата: 07.06.12 14:11
Оценка:
Здравствуйте, vog, Вы писали:

A>>В языках, которых нет циклов и типа дабл.


vog>Я так понимаю, это про арифмометр имени Феликса Эдмундовича Дзержинского? Видел такой в детстве )))


Была в свое время такая система — Gupta Centura, так вот в том местном языке единственный цикл был while.
Re[5]: for с типом double
От: pagid Россия  
Дата: 07.06.12 14:44
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Не всплывают, если внимательно читать требования. Потому что куда девать ошибки округления там должно оговариваться.

Должны оговариваться, но внимания эти особенности требуют куда, как больше, чем возможное (согласен, конечно — нежелательное) использование double для денег.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[4]: for с типом double
От: Vain Россия google.ru
Дата: 11.06.12 23:23
Оценка:
Здравствуйте, GarryIV, Вы писали:

D>>>во-вторых, писать такой цикл (для плавающей точки) с фиксированным шагом это дурной тон, потому что такой цикл рискует незаметно превратиться в бесконечный.

MM>>Каким образом он превратится в бесконечный?
GIV>для double вполне может быть что x + 0.1 == x будет true
если что, там в условии < а не ==, так что бесконечным он никак не станет
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: for с типом double
От: Vain Россия google.ru
Дата: 11.06.12 23:39
Оценка:
Здравствуйте, Centaur, Вы писали:

_>>>Потому что существуют неточности. И если шаг 0.1 можно использовать, то 0.333333333333333 уже может привести к проблемам.

НС>>Хинт — основание в double хранится в двоичном виде, и иррациональные числа для двоичной и десятичной системы не совпадают.
C>Иррациональное число — это такое, которое непредставимо в виде дроби n/m для целых n, m, и это от основания системы счисления не зависит.
А если основание 3, то 1/3 можно точно представить будет?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[7]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 11.06.12 23:40
Оценка:
Здравствуйте, Abalak, Вы писали:

A>Была в свое время такая система — Gupta Centura, так вот в том местном языке единственный цикл был while.


В фокале (эх, БК-0010) и синклеровском диалекте бейсика и того не было. IF/GOTO, и хватит.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[8]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 11.06.12 23:47
Оценка:
ДимДимыч писал:

ДД>В фокале (эх, БК-0010) и синклеровском диалекте бейсика и того не было. IF/GOTO, и хватит.


А, не, гоню. В бейсике FOR был, а STEP там не было.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[5]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 11.06.12 23:49
Оценка:
Здравствуйте, Vain, Вы писали:

V>А если основание 3, то 1/3 можно точно представить будет?


Конечно. 1/3 представляется как 0.1.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.