for с типом double
От: vog Россия [реклама удалена модератором]
Дата: 06.06.12 07:06
Оценка: +1 :))) :))
Всем привет!
Задали мне тут вопрос, почему нет цикла for c таким типом. Человек вторую неделю осваивает программирование, поэтому ему непонятно. В принципе, я ответил, что раньше операции с плавающей запятой были затратные, поэтому в Си сделали циклы с типом int. А вы что думаете?
-------- это кусок из его поста у меня на форуме ------------

Вообще-то, ситуация могла быть немного странной.. но теоретически могла быть..
Например, сделать цикл по цене
[quote]
int start()
{
double p;
for(p=1.22;p<1.28;p+=0.01)
Alert("Докупился по цене", p ,"пипс");
}
[реклама удалена модератором]
Re: for с типом double
От: MTD https://github.com/mtrempoltsev
Дата: 06.06.12 07:17
Оценка: +2
Здравствуйте, vog, Вы писали:

vog>Задали мне тут вопрос, почему нет цикла for c таким типом.


Щито?
Re: for с типом double
От: dilmah США  
Дата: 06.06.12 07:23
Оценка: +3 :)
vog>Задали мне тут вопрос, почему нет цикла for c таким типом.

во-первых, как заметили выше, он есть.
во-вторых, писать такой цикл (для плавающей точки) с фиксированным шагом это дурной тон, потому что такой цикл рискует незаметно превратиться в бесконечный.
Re[2]: for с типом double
От: vog Россия [реклама удалена модератором]
Дата: 06.06.12 07:31
Оценка: -1 :))
Здравствуйте, dilmah, Вы писали:


vog>>Задали мне тут вопрос, почему нет цикла for c таким типом.


D>во-первых, как заметили выше, он есть.

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

В каком языке есть цикл for с типом double? Так, сам себе отвечаю — в Матлабе есть )) А еще?
[реклама удалена модератором]
Re[3]: for с типом double
От: dilmah США  
Дата: 06.06.12 07:41
Оценка: +1
vog>В каком языке есть цикл for с типом double?

С, С++
Re[2]: for с типом double
От: MxMsk Португалия  
Дата: 06.06.12 07:43
Оценка: +2 :)
Здравствуйте, dilmah, Вы писали:

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

Каким образом он превратится в бесконечный?
Re[4]: for с типом double
От: Privalov  
Дата: 06.06.12 07:49
Оценка:
Здравствуйте, dilmah, Вы писали:

vog>>В каком языке есть цикл for с типом double?


D>С, С++


Напрочь забыл, а в Фортране IV цикл работает с REAL? И проверить не могу, нет Фортрана под рукой.
Re[2]: for с типом double
От: vpchelko  
Дата: 06.06.12 07:51
Оценка: +2 -3
Здравствуйте, dilmah, Вы писали:
D>потому что такой цикл рискует незаметно превратиться в бесконечный.
Щито?
Сало Украине, Героям Сала
Re: for с типом double
От: vpchelko  
Дата: 06.06.12 07:53
Оценка:
Здравствуйте, vog, Вы писали:

По крайне мере такие циклы не приемлемы при работе с индексами массивов данных.
Сало Украине, Героям Сала
Re[3]: for с типом double
От: GarryIV  
Дата: 06.06.12 07:53
Оценка: +2
Здравствуйте, MxMsk, Вы писали:

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


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

MM>Каким образом он превратится в бесконечный?

для double вполне может быть что x + 0.1 == x будет true
WBR, Igor Evgrafov
Re[4]: for с типом double
От: vpchelko  
Дата: 06.06.12 07:57
Оценка:
Здравствуйте, GarryIV, Вы писали:
GIV>для double вполне может быть что x + 0.1 == x будет true
Да если x на порядок больше константы.
Сало Украине, Героям Сала
Re[3]: for с типом double
От: dilmah США  
Дата: 06.06.12 08:08
Оценка: -2
D>>во-вторых, писать такой цикл (для плавающей точки) с фиксированным шагом это дурной тон, потому что такой цикл рискует незаметно превратиться в бесконечный.
MM>Каким образом он превратится в бесконечный?

Каким образом он может БЫТЬ бесконечным достаточно очевидно: есть числа для которых a+b==a и если такие числа встретятся в этой поcледовательности, то цикл перестает прогрессировать.

Каким образом он может ПРЕВРАТИТЬСЯ в бесконечный -- ну либо если пределы/шаг цикла задаются неконстантами. Либо при портировании на другую платформу, с другим форматом/округлением флоатов.
Re: for с типом double
От: Niemand Австралия  
Дата: 06.06.12 08:09
Оценка:
Здравствуйте, vog, Вы писали:

vog>Всем привет!

vog>Задали мне тут вопрос, почему нет цикла for c таким типом. Человек вторую неделю осваивает программирование, поэтому ему непонятно. В принципе, я ответил, что раньше операции с плавающей запятой были затратные, поэтому в Си сделали циклы с типом int. А вы что думаете?

туда можно пихать все, даже нескалярные типы — итераторы например. а можно вообще for(;)

но ответом на вопрос почему чаще всего там int скорее всего будет
1) потому что очень часто i используется для перебора массива и double там будет как зайцу стоп-сигнал
2) можно нарваться на неразбериху с "масштабом". кто-то добрый поменяет 0.01 на 0.1 и привет
3) double считать таки затратнее чем int
If the message above is in English — means I'm wasting my work time and work computer to post here. No hard feelings
Re[3]: for с типом double
От: andyag  
Дата: 06.06.12 08:12
Оценка:
Здравствуйте, vog, Вы писали:

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

C, C++, C#, Java. Я бы скорее задал вопрос — в каком языке его нет.
Re[3]: for с типом double
От: Miroff Россия  
Дата: 06.06.12 08:14
Оценка:
Здравствуйте, vog, Вы писали:

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


Java, Python, Ruby, JavaScript. Сложнее сказать в каком нет.
Re[4]: for с типом double
От: andyag  
Дата: 06.06.12 08:18
Оценка:
Здравствуйте, Miroff, Вы писали:

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


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


M>Java, Python, Ruby, JavaScript. Сложнее сказать в каком нет.


А покажите пожалуйста в питоне как. Каноничный range вроде требует целые.
Re[2]: for с типом double
От: Ops Россия  
Дата: 06.06.12 09:19
Оценка:
Здравствуйте, vpchelko, Вы писали:

V>По крайне мере такие циклы не приемлемы при работе с индексами массивов данных.

А мужики-то не знали. Как же тогда функции по таблицам считают?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: for с типом double
От: vpchelko  
Дата: 06.06.12 09:29
Оценка: -1
Здравствуйте, Ops, Вы писали:

Ops>А мужики-то не знали. Как же тогда функции по таблицам считают?


Для таблиц есть специальные типы данных. Например HashMap
Сало Украине, Героям Сала
Re[4]: for с типом double
От: MxMsk Португалия  
Дата: 06.06.12 09:36
Оценка:
Здравствуйте, dilmah, Вы писали:

D>Каким образом он может БЫТЬ бесконечным достаточно очевидно: есть числа для которых a+b==a и если такие числа встретятся в этой поcледовательности, то цикл перестает прогрессировать.

Очевидно, по-моему, обратное. Что в данном случае ничего бесконечного не будет. Приведи мне цифры от 1.22 до 1.28 с шагом 0.01, которые способны застопорить цикл? Максимум можем получить одну лишнюю или недостающую итерацию.

D>Каким образом он может ПРЕВРАТИТЬСЯ в бесконечный -- ну либо если пределы/шаг цикла задаются неконстантами. Либо при портировании на другую платформу, с другим форматом/округлением флоатов.

По такой логике ничего дробного вообще нельзя использовать ни в каких циклах
Re[4]: for с типом double
От: MxMsk Португалия  
Дата: 06.06.12 09:38
Оценка:
Здравствуйте, GarryIV, Вы писали:

MM>>Каким образом он превратится в бесконечный?

GIV>для double вполне может быть что x + 0.1 == x будет true
Для какого double в диапазоне от 1.22 до 1.28?
Re: for с типом double
От: achp  
Дата: 06.06.12 09:47
Оценка: +1
Здравствуйте, vog, Вы писали:

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


Это вполне допустимо, как уже сказали. Вопрос в другом: сколько раз выполнится этот цикл? 6 или 7?
Re: for с типом double
От: dima_ksk  
Дата: 06.06.12 09:57
Оценка: +1 -2 :)
Здравствуйте, vog, Вы писали:

vog>Всем привет!

vog>Задали мне тут вопрос, почему нет цикла for c таким типом. Человек вторую неделю осваивает программирование, поэтому ему непонятно. В принципе, я ответил, что раньше операции с плавающей запятой были затратные, поэтому в Си сделали циклы с типом int. А вы что думаете?
vog>-------- это кусок из его поста у меня на форуме ------------

Потому что существуют неточности. И если шаг 0.1 можно использовать, то 0.333333333333333 уже может привести к проблемам.
Re[5]: for с типом double
От: dilmah США  
Дата: 06.06.12 09:58
Оценка: +2
MM>Очевидно, по-моему, обратное. Что в данном случае ничего бесконечного не будет. Приведи мне цифры от 1.22 до 1.28 с шагом 0.01, которые способны застопорить цикл? Максимум можем получить одну лишнюю или недостающую итерацию.

я не упоминал конкретных значений.
Я только указал на наличие непримиримой классовой борьбы между ПЛАВАЮЩЕЙ запятой и ФИКСИРОВАННЫМ шагом.

В случае 1.22->1.28 с шагом 0.01 естественно напрашивается фиксированная запятая.


MM>По такой логике ничего дробного вообще нельзя использовать ни в каких циклах


ну это недалеко от правды. Принимать РЕШЕНИЯ (а выходить или не выходить из цикла это тоже решение) нужно опираясь как можно больше на дискретное, комбинаторное состояние, а не на результаты вычислений с плавающей точкой.
Re: for с типом double
От: blackhearted Украина  
Дата: 06.06.12 11:56
Оценка: :)))
vog> Alert("Докупился по цене", p ,"пипс");
Вот что Forex делает с людьми...
Re[5]: for с типом double
От: blackhearted Украина  
Дата: 06.06.12 11:58
Оценка:
Здравствуйте, MxMsk, Вы писали:

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


MM>>>Каким образом он превратится в бесконечный?

GIV>>для double вполне может быть что x + 0.1 == x будет true
MM>Для какого double в диапазоне от 1.22 до 1.28?

О, да.
Написать в комментах, что для диапазона [1.22 ; 1.28) работает, а для других — тестируйте сами.
Re[5]: for с типом double
От: blackhearted Украина  
Дата: 06.06.12 12:00
Оценка:
Здравствуйте, MxMsk, Вы писали:

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


D>>Каким образом он может БЫТЬ бесконечным достаточно очевидно: есть числа для которых a+b==a и если такие числа встретятся в этой поcледовательности, то цикл перестает прогрессировать.

MM>Очевидно, по-моему, обратное. Что в данном случае ничего бесконечного не будет. Приведи мне цифры от 1.22 до 1.28 с шагом 0.01, которые способны застопорить цикл? Максимум можем получить одну лишнюю или недостающую итерацию.
Но ведь на кухнебирже это может очень сильно повлиять на расклад сил.

D>>Каким образом он может ПРЕВРАТИТЬСЯ в бесконечный -- ну либо если пределы/шаг цикла задаются неконстантами. Либо при портировании на другую платформу, с другим форматом/округлением флоатов.

MM>По такой логике ничего дробного вообще нельзя использовать ни в каких циклах
Для таких штук лучшие собаководы успешные трейдеры придумали использовать целые.
Re[6]: for с типом double
От: MxMsk Португалия  
Дата: 06.06.12 12:04
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>О, да.

B>Написать в комментах, что для диапазона [1.22 ; 1.28) работает, а для других — тестируйте сами.
Угу, я уже понял, что никто здесь в управляющих переменнах цикла никогда числа с плавающей запятой не использует. А то не дай Бог, цикл превратиться в бесконечный. О! А еще по int-у тоже нельзя цикл гонять, вдруг за границу выйдем. Как страшно жить.
Re[7]: for с типом double
От: blackhearted Украина  
Дата: 06.06.12 12:29
Оценка:
Здравствуйте, MxMsk, Вы писали:

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


B>>О, да.

B>>Написать в комментах, что для диапазона [1.22 ; 1.28) работает, а для других — тестируйте сами.
MM>Угу, я уже понял, что никто здесь в управляющих переменнах цикла никогда числа с плавающей запятой не использует. А то не дай Бог, цикл превратиться в бесконечный. О! А еще по int-у тоже нельзя цикл гонять, вдруг за границу выйдем. Как страшно жить.
Везде стараемся обойтись целыми, есть такая фигня.
Как научили, так и копаемся. Жить страшновато, согласен.
Re[6]: for с типом double
От: MxMsk Португалия  
Дата: 06.06.12 12:52
Оценка:
Здравствуйте, blackhearted, Вы писали:

D>>>Каким образом он может БЫТЬ бесконечным достаточно очевидно: есть числа для которых a+b==a и если такие числа встретятся в этой поcледовательности, то цикл перестает прогрессировать.

MM>>Очевидно, по-моему, обратное. Что в данном случае ничего бесконечного не будет. Приведи мне цифры от 1.22 до 1.28 с шагом 0.01, которые способны застопорить цикл? Максимум можем получить одну лишнюю или недостающую итерацию.
B>Но ведь на кухнебирже это может очень сильно повлиять на расклад сил.
Безусловно. Но это уже другой вопрос. Я же спрашивал про превращение приведенного цикла в бесконечный. Сейчас уже понял, что спутал контекст. dilmah ответил про циклы по double в общем, а я думал, что он имеет ввиду "бесконечность" приведенного цикла.
Re[7]: for с типом double
От: Andrey.V.Lobanov  
Дата: 06.06.12 13:18
Оценка:
Здравствуйте, MxMsk, Вы писали:

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

и никому не говорить про указатели...
Re: for с типом double
От: msk78 Россия http://miccro.livejournal.com
Дата: 06.06.12 14:42
Оценка:
Будет накапливаться погрешность. А это не всегда приемлемо.
double d;
for (d = 0.0; d < 1000.0; d += 0.01) ;
Console.WriteLine(d);
---------------------
Output: d оказалось больше тысячи!
1000,00999999924
Press any key to continue . . .
Re[2]: for с типом double
От: Ночной Смотрящий Россия  
Дата: 06.06.12 15:15
Оценка: +2 -2
Здравствуйте, dima_ksk, Вы писали:

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


Хинт — основание в double хранится в двоичном виде, и иррациональные числа для двоичной и десятичной системы не совпадают.
Re[2]: for с типом double
От: avpavlov  
Дата: 06.06.12 15:25
Оценка: +3
Здравствуйте, 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 . . .

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


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


тут, кстати, i окажется больше 10
Re[4]: for с типом double
От: LaptevVV Россия  
Дата: 06.06.12 15:33
Оценка:
Здравствуйте, andyag, Вы писали:

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


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

A>C, C++, C#, Java. Я бы скорее задал вопрос — в каком языке его нет.
В Паскале и его наследниках: Модула-2, Оберон, Компонентный паскаль...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: for с типом double
От: Deprivator  
Дата: 06.06.12 15:54
Оценка: 1 (1) +4 -1 :))) :))) :))) :)
Здравствуйте, LaptevVV, Вы писали:

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

A>>C, C++, C#, Java. Я бы скорее задал вопрос — в каком языке его нет.
LVV>В Паскале и его наследниках: Модула-2, Оберон, Компонентный паскаль...

так це ж разве языки?!
In P=NP we trust.
Re[4]: for с типом double
От: alzt  
Дата: 06.06.12 16:56
Оценка: +1 :)
Здравствуйте, andyag, Вы писали:

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

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

В языках, которых нет циклов и типа дабл.
Re[6]: for с типом double
От: LaptevVV Россия  
Дата: 06.06.12 17:27
Оценка: 3 (1) :)))
Здравствуйте, Deprivator, Вы писали:

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


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

A>>>C, C++, C#, Java. Я бы скорее задал вопрос — в каком языке его нет.
LVV>>В Паскале и его наследниках: Модула-2, Оберон, Компонентный паскаль...

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

Покруче С/С++ будут...
С сайта Информатика-21

2012-05-09
Ко Дню Победы приурочиваем новость, пришедшую из команды нашего консультанта, конструктора БПЛА Н.В.Чистякова, ещё во время визита Н.Вирта принявшего решение о переходе на Оберон, с чем, однако, имели место трудности из-за сугубой специфики используемого тогда "железа":
... наконец-то, перешли с Embedded Pascal на Astrobe Oberon-07.
После устранения обнаруженных ошибок в компиляторе Astrobe, он нас стал устраивать.
Николаю Валерьевичу Оберон понравился ...

Вот, по-моему, в чём состоят основные преимущества перехода с Embedded Pascal на Оберон:
Теперь нет ни одной строчки на ассемблере.
Удобен тип SET, именно в таком виде, как в Обероне. Особенно в системном программировании.
Компилятор гораздо надёжнее, т. к. язык проще.
В Embedded Pascal были неустранённые ошибки, которые были известны, и их обходили стороной, в том числе использованием ассемблера...
Перешли с архитектуры 8051 на более простую — ARM. ...

Выделены пункты в актуальную и обсуждаемую тему о пригодности Оберонов в системном программировании. Напомним, что тип SET в Обероне -- это средство побитовой работы, математически элегантно и концептуально чисто реализованное в теоретико-множественной парадигме (см. Сообщение о языке).

Приятно, что в команде Чистякова теперь работает выпускник Физического факультета МГУ Александр Ширяев, прошедший через спецкурс Ф.В.Ткачева.

Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: for с типом double
От: Dair Россия https://dair.spb.ru
Дата: 06.06.12 17:42
Оценка: 1 (1) +3 :)))
Бабло ни в коем случае нельзя хранить в double. Бабло надо хранить исключительно в unsigned long long.
Re[3]: for с типом double
От: Centaur Россия  
Дата: 06.06.12 17:49
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

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


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


Иррациональное число — это такое, которое непредставимо в виде дроби n/m для целых n, m, и это от основания системы счисления не зависит. То, которое не совпадает, называется «бесконечные периодические дроби».
Re[2]: for с типом double
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 06.06.12 18:13
Оценка: +3
Здравствуйте, Dair, Вы писали:

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


В правильных языках для хранения бабла существуют типы данных с фиксированной точкой — вот в них бабло и надо хранить
[КУ] оккупировала армия.
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.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[6]: for с типом double
От: Vain Россия google.ru
Дата: 12.06.12 00:02
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

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

ДД>Конечно. 1/3 представляется как 0.1.
А если основание — иррациональное число? К примеру — e?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[7]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 12.06.12 00:11
Оценка:
Здравствуйте, Vain, Вы писали:

V>А если основание — иррациональное число? К примеру — e?


Хм. Тогда точно представляется любое число-сумма e^x, где x есть из Z. Соответственно, рациональные числа, кроме 0 и 1, точно не представляются.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[8]: for с типом double
От: Vain Россия google.ru
Дата: 12.06.12 00:21
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

V>>А если основание — иррациональное число? К примеру — e?

ДД>Хм. Тогда точно представляется любое число-сумма e^x, где x есть из Z. Соответственно, рациональные числа, кроме 0 и 1, точно не представляются.
Т.е. основание всё-таки влияет на иррациональность числа и 1 стала иррациональной?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[9]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 12.06.12 00:59
Оценка:
Здравствуйте, Vain, Вы писали:

V>Т.е. основание всё-таки влияет на иррациональность числа и 1 стала иррациональной?


С чего бы это? Иррациональные числа — те, которые не есть рациональные. А рациональные определяются как частное целых чисел.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[10]: for с типом double
От: Vain Россия google.ru
Дата: 12.06.12 12:20
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

V>>Т.е. основание всё-таки влияет на иррациональность числа и 1 стала иррациональной?

ДД>С чего бы это?
Ну так мы ж не может представить 1 конечной дробью, значит иррациональное.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[11]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 12.06.12 15:59
Оценка:
Здравствуйте, Vain, Вы писали:

V>Ну так мы ж не может представить 1 конечной дробью, значит иррациональное.


1 = e⁰
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[5]: for с типом double
От: Pavel Dvorkin Россия  
Дата: 12.06.12 16:02
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Напрочь забыл, а в Фортране IV цикл работает с REAL? И проверить не могу, нет Фортрана под рукой.


Нет.
With best regards
Pavel Dvorkin
Re: for с типом double
От: batu Украина  
Дата: 12.06.12 16:12
Оценка:
Здравствуйте, vog, Вы писали:

vog>Всем привет!

vog>Задали мне тут вопрос, почему нет цикла for c таким типом. Человек вторую неделю осваивает программирование, поэтому ему непонятно. В принципе, я ответил, что раньше операции с плавающей запятой были затратные, поэтому в Си сделали циклы с типом int. А вы что думаете?
А тут и думать нечего. Если перебор нельзя организовать по целым числам, то их что нельзя сосчитать? Это ж бред..
Re[12]: for с типом double
От: Vain Россия google.ru
Дата: 12.06.12 18:29
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

V>>Ну так мы ж не может представить 1 конечной дробью, значит иррациональное.

ДД>1 = e⁰
Сами себя решили опровергнуть?

Соответственно, рациональные числа, кроме 0 и 1, точно не представляются

[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[13]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 12.06.12 21:21
Оценка:
Здравствуйте, Vain, Вы писали:

V>Сами себя решили опровергнуть?

V>

V>Соответственно, рациональные числа, кроме 0 и 1, точно не представляются


И что не правильно?
Не пойму, что вы пытаетесь доказать и с чем спорите.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[4]: for с типом double
От: Философ Ад http://vk.com/id10256428
Дата: 12.06.12 22:21
Оценка: +1
Здравствуйте, GarryIV, Вы писали:

GIV>для double вполне может быть что x + 0.1 == x будет true


а для целочисленных типа ограничений не существует
Всё сказанное выше — личное мнение, если не указано обратное.
Re[14]: for с типом double
От: Vain Россия google.ru
Дата: 13.06.12 02:34
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

V>>Сами себя решили опровергнуть?

V>>

V>>Соответственно, рациональные числа, кроме 0 и 1, точно не представляются

ДД>И что не правильно?
разве e^0 не точное представление единицы?

ДД>Не пойму, что вы пытаетесь доказать и с чем спорите.

Не доказать, а понять почему это от основания не зависит когда зависит. К примеру, если не 1 то можно взять 2, его ведь тоже точно не представить числом с основанием "e"? Тогда получается что 2 в этом случае иррациональное число.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[15]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 13.06.12 10:37
Оценка:
Здравствуйте, Vain, Вы писали:

V>>>Соответственно, рациональные числа, кроме 0 и 1, точно не представляются

ДД>>И что не правильно?
V>разве e^0 не точное представление единицы?

Точное, я об этом и сказал.

V>Не доказать, а понять почему это от основания не зависит когда зависит.


Что зависит, рациональность? Число может быть рациональным, или иррациональным, это свойство самого числа, независимо от его представления в системе счисления. А возможность точного представления числа зависит от основания системы счисления, но к рациональности отношения не имеет.

V>К примеру, если не 1 то можно взять 2, его ведь тоже точно не представить числом с основанием "e"? Тогда получается что 2 в этом случае иррациональное число.


2 представимо в виде дроби целого числа 2 и натурального числа 1. Оно рационально по определению.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[6]: for с типом double
От: Mamut Швеция http://dmitriid.com
Дата: 17.06.12 10:38
Оценка:
vog>>>>В каком языке есть цикл for с типом double? Так, сам себе отвечаю — в Матлабе есть )) А еще?
A>>>C, C++, C#, Java. Я бы скорее задал вопрос — в каком языке его нет.

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


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


Ну, в функциональных языках есть тип дабл, но нет циклов


dmitriid.comGitHubLinkedIn
Re[9]: for с типом double
От: Son of Northern Darkness  
Дата: 17.06.12 15:46
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>ДимДимыч писал:


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


ДД>А, не, гоню. В бейсике FOR был, а STEP там не было.

Поять гонишь В Sinclair BASIC STEP был.
Re[10]: for с типом double
От: ДимДимыч Украина http://klug.org.ua
Дата: 17.06.12 21:12
Оценка:
Здравствуйте, Son of Northern Darkness, Вы писали:

ДД>>А, не, гоню. В бейсике FOR был, а STEP там не было.

SON>Поять гонишь В Sinclair BASIC STEP был.

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