Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];

Вниз

Реал и матем. функции.   Найти похожие ветки 

 
AlexDan ©   (2009-03-10 19:39) [0]

Вот такое выражение равно 1-це.
chb:real; chb:=1.2;
abs(frac(chb/0.6))
Вроде должен быть 0?, насколько я понимаю..?.


 
AlexDan ©   (2009-03-10 19:42) [1]

Случайно при пошаговой отладке обнаружил(.


 
AlexDan ©   (2009-03-10 20:36) [2]

Глюк мат. функций?, по моему я что-то вроде в ТР встречал как-то.


 
Юрий Зотов ©   (2009-03-10 20:39) [3]

1.2/0.6 не равно 2.0, потому что 0.6 степенью двойки не является.


 
Amoeba ©   (2009-03-10 22:53) [4]

Автору вопроса читать до полного просветления, дабы таких вопросов более не возникало:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


 
Palladin ©   (2009-03-11 08:09) [5]

Автору вопроса уже давали эту ссылку. Дважды. Но он сказал не учите меня жить помогите материально.


 
Amoeba ©   (2009-03-11 11:05) [6]


> Palladin ©   (11.03.09 08:09) [5]
>
> Автору вопроса уже давали эту ссылку. Дважды. Но он сказал
> не учите меня жить помогите материально.

Ну что ж, больше не буду метать бисер.


 
AlexDan ©   (2009-03-11 22:34) [7]

Тут дело не в бисере). Теорию я конечно в общих чертах представляю. Вопрос здесь и не только стоял более практический. Т.е. такой подход:
if frac(b/3)=0 then.., где b,-real считаю надёжным, т.е. рабочим.
if frac(b/0.6)=0 then..,- считаю нерабочим, т.к. равенство нулю не выполнится никогда. Вот я и спрашивал, чем можно второй подход заменить. Мне пришлось просто заменить его на другой алгоритм, потому как  к другим функциям или формулам перейти нельзя видимо.


 
Германн ©   (2009-03-12 00:09) [8]


> Теорию я конечно в общих чертах представляю. Вопрос здесь
> и не только стоял более практический. Т.е. такой подход:
>
> if frac(b/3)=0 then.., где b,-real считаю надёжным, т.е.
>  рабочим.

Фигово представляешь. Вещественные числа НИКОГДА нельзя сравнивать на строгое равенство! Ни в математике ни, тем более в программировании.


 
Anatoly Podgoretsky ©   (2009-03-12 00:54) [9]

> Германн  (12.03.2009 0:09:08)  [8]

Можно и там и там.


 
Германн ©   (2009-03-12 01:17) [10]


> Anatoly Podgoretsky ©   (12.03.09 00:54) [9]
>
> > Германн  (12.03.2009 0:09:08)  [8]
>
> Можно и там и там.
>

Нельзя ни там, ни там!
Имею мнение, попробуй оспорить!


 
Тын-Дын ©   (2009-03-12 01:36) [11]


> Anatoly Podgoretsky ©   (12.03.09 00:54) [9]
> > Германн  (12.03.2009 0:09:08)  [8]Можно и там и там.


Абсолютно точно-)


 
Германн ©   (2009-03-12 01:38) [12]


> Тын-Дын ©   (12.03.09 01:36) [11]
>
>
> > Anatoly Podgoretsky ©   (12.03.09 00:54) [9]
> > > Германн  (12.03.2009 0:09:08)  [8]Можно и там и там.
>
>
>
> Абсолютно точно-)
>

Ну попробуй, оспорь.


 
Тын-Дын ©   (2009-03-12 01:41) [13]


> Германн ©   (12.03.09 01:38) [12]
> > Тын-Дын ©   (12.03.09 01:36) [11]> > > > Anatoly Podgoretsky
> ©   (12.03.09 00:54) [9]> > > Германн  (12.03.2009 0:09:
> 08)  [8]Можно и там и там.> > > > Абсолютно точно-)> Ну
> попробуй, оспорь.


Это ты попробуй.
Кто сказал, что нельзя сравнивать?


 
Германн ©   (2009-03-12 01:44) [14]


> Кто сказал, что нельзя сравнивать?

Ты пьян, или ...
Это я сказал.

Хм.
Ты вообще с кем разговариваешь?


 
Тын-Дын ©   (2009-03-12 01:52) [15]


> Германн ©   (12.03.09 01:44) [14]
> > Кто сказал, что нельзя сравнивать?Ты пьян, или ... Это
> я сказал. Хм. Ты вообще с кем разговариваешь?


А ты что, авторитет в некоторых кругах?

Кто мне может запретить сравнивать?


 
Германн ©   (2009-03-12 02:09) [16]


> Тын-Дын ©   (12.03.09 01:52) [15]
>
>
> > Германн ©   (12.03.09 01:44) [14]
> > > Кто сказал, что нельзя сравнивать?Ты пьян, или ... Это
> > я сказал. Хм. Ты вообще с кем разговариваешь?
>
>
> А ты что, авторитет в некоторых кругах?
>
> Кто мне может запретить сравнивать?
>

Никто не может тебе запретить ничто! Но пить, надо меньше! Это уже совет именно к тебе!


 
AlexDan ©   (2009-03-12 02:15) [17]

Германн прав, я только что как раз это всё прогнал:
  if frac(a/b)=0 then.. можно, где a,b:real,
  if frac(a/0.6)=0 then.. нельзя. Причём if frac(a/3)=0 then.. можно.


 
Германн ©   (2009-03-12 02:24) [18]


> AlexDan ©   (12.03.09 02:15) [17]
>
> Германн прав, я только что как раз это всё прогнал:

Ну спасибо.
Но прав не Германн. Права наука!


 
AlexDan ©   (2009-03-12 02:34) [19]

Хотя, если честно, понять сложно, почему
if frac(a/0.6)=0 then.. нельзя
if frac(a/3)=0 then.. можно. Наверно представление чисел, я на этот счёт толком ничего не читал..)


 
Германн ©   (2009-03-12 02:56) [20]


> AlexDan ©   (12.03.09 02:34) [19]
>
> Хотя, если честно, понять сложно, почему
> if frac(a/0.6)=0 then.. нельзя
> if frac(a/3)=0 then.. можно. Наверно представление чисел,
>  я на этот счёт толком ничего не читал..)
>

Ну может наконец-то почитаешь что-нибудь!
Или ты совсем "пустой нуль"?


 
Германн ©   (2009-03-12 02:58) [21]


> if frac(a/3)=0 then.. можно.

Ну не можно!
Тебе где-то повезло.


 
Anatoly Podgoretsky ©   (2009-03-12 07:44) [22]

> Германн  (12.03.2009 1:38:12)  [12]

Зачем бить головой об стену.


 
korneley ©   (2009-03-12 08:20) [23]

Ну вы на ровном месте битву развернули! :))) Автор же пишет "Наверно представление чисел, я на этот счёт толком ничего не читал" И это после, как минимум, трёх (!) выданных ему ссылок на статью.
А сравнивать на равенство, конечно, никто не запрещает. Вот только результат может удивить :)


 
Anatoly Podgoretsky ©   (2009-03-12 08:46) [24]

> korneley  (12.03.2009 8:20:23)  [23]

А может быть единственно верным.
Ветка познавательная - о вреде догматов.


 
Григорьев Антон ©   (2009-03-12 09:54) [25]

В ряде частных случаев вещественные числа сравнивать операцией "=" вполне можно. Например, банальная проверка является ли число квадратом целого: if Fraq(Sqrt(X)) = 0 ... вполне работоспособна.


 
korneley ©   (2009-03-12 11:08) [26]


> Григорьев Антон ©   (12.03.09 09:54) [25]
> В ряде частных случаев...

Так и я о том. Знать надо, что и для чего лепишь. "Чтобы не было мучительно больно за..." (с) :) У автора другая проблема: читать/учиться не желает, но выдвигает "смелые" гипотезы, как в [2]. Уж не знаю, что с ним будет, когда он случайно обнаружит, что round(1.5) = round(2.5)


 
Palladin ©   (2009-03-12 11:14) [27]


> korneley ©   (12.03.09 11:08) [26]

ну зачем ты это сказал... ведь всю жизь человеку испортил :)


 
Ega23 ©   (2009-03-12 11:18) [28]


> Уж не знаю, что с ним будет, когда он случайно обнаружит,
>  что round(1.5) = round(2.5)


Гм... Я в этих делах не шибко силён, но, ЕМНИП - не всегда. Там же можно как-то алгоритм округления выбирать? Или я "с прямым углом спутал" (с)?


 
korneley ©   (2009-03-12 11:27) [29]


> Ega23 ©   (12.03.09 11:18) [28]
> Там же можно как-то алгоритм округления выбирать?

"This method of rounding is often called "Banker’s Rounding". А стало быть, при равноудалённости, до ближайшего чётного ;) Правда, SetRoundMode(), тоже никто не отменял :)))


 
Игорь Шевченко ©   (2009-03-12 11:30) [30]

Германн ©   (12.03.09 01:44) [14]


> Ты пьян, или ...
> Это я сказал.
>
> Хм.
> Ты вообще с кем разговариваешь?


Есть предложение не писать таких постов. Во-первых, оффтопик, во-вторых троллизм, в-третьих, элементарная невежливость.


 
Palladin ©   (2009-03-12 11:31) [31]


> Ega23 ©   (12.03.09 11:18) [28]

Если ты имеешь в виду это:
SetRoundMode(rmNearest);
Memo1.Lines.Add("rmNearest:"+BoolToStr(round(1.5) = round(2.5),True));
SetRoundMode(rmDown);
Memo1.Lines.Add("rmDown:"+BoolToStr(round(1.5) = round(2.5),True));
SetRoundMode(rmUp);
Memo1.Lines.Add("rmUp:"+BoolToStr(round(1.5) = round(2.5),True));
SetRoundMode(rmTruncate);
Memo1.Lines.Add("rmTruncate:"+BoolToStr(round(1.5) = round(2.5),True));

то боюсь тебя разочаровать :)


 
Ega23 ©   (2009-03-12 11:31) [32]


> Правда, SetRoundMode(), тоже никто не отменял :)))


Во, я помню что что-то такое было!


 
Ega23 ©   (2009-03-12 11:34) [33]


> то боюсь тебя разочаровать :)


Не знаю, я (тьфу-тьфу-тьфу) из всех округлений только

CREATE PROCEDURE S_GetDayTime
@DateTime datetime=0,
@Date    datetime=0 output,
@Time datetime=0 output,
@DateTimeStr varchar(32)="" output,
@Debug int=-1
AS
set nocount on
  Set @Date=cast( Floor(cast(@DateTime as numeric(18,12))) as datetime)
  Set @Time=@DateTime-@Date
  set @DateTimeStr=convert(char(10),@DateTime,104)+" "+convert(char(5),@DateTime,108)
GO

использовал...  :)


 
Palladin ©   (2009-03-12 11:36) [34]

Удалено модератором
Примечание: дубль


 
Германн ©   (2009-03-13 01:08) [35]


> Игорь Шевченко ©   (12.03.09 11:30) [30]

Принято.
Больше такого не будет.
Прошу извинения у всех, кого я "нечаянно обидел". Честное слово, нечаянно!
Был вчера "несколько не в себе" под влиянием медицинских препаратов. Простудился, блин. А жена моя, врач мой, начала меня лечить! :(


> Тын-Дын ©   (12.03.09 01:41) [13]
>
>
> > Германн ©   (12.03.09 01:38) [12]
> > > Тын-Дын ©   (12.03.09 01:36) [11]> > > > Anatoly Podgoretsky
> > ©   (12.03.09 00:54) [9]> > > Германн  (12.03.2009 0:09:
>
> > 08)  [8]Можно и там и там.> > > > Абсолютно точно-)> Ну
> > попробуй, оспорь.
>
>
> Это ты попробуй.

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

> Григорьев Антон ©   (12.03.09 09:54) [25]


Но это искусственные примеры, которые были созданы "наоборот".  В таком примере, нет никакого смысла проверять его результат!.
А в реальной задаче (программе) проверять "строгое" равенство - по крайней мере неумно.
Это в "общем случае". Каким и является сабж.

P.S. Надеюсь автор сабжа наконец начнёт читать и думать.


 
AlexDan ©   (2009-03-13 21:03) [36]

> Германн ©   (13.03.09 01:08) [35]
> P.S. Надеюсь автор сабжа наконец начнёт читать и думать.
Будем надеяться..:)). AlexDan/


 
Amoeba ©   (2009-03-13 22:33) [37]

Верится с трудом


 
AlexDan ©   (2009-03-14 00:10) [38]

> Amoeba ©   (13.03.09 22:33) [37]
А у меня гуппи редкие вывелись случайно, зелёные кобры. Это я Вам как гидробиологу говорю). Красивые заразы, говорят дорого стоят, не знаю куда их девать..(. Множаться потихоньку..


 
Тын-Дын ©   (2009-03-14 00:27) [39]


> Германн ©   (13.03.09 01:08) [35]
>Попробую.Искусственные ситуации, в которых
> мы можем сравнивать результат математических функций, в
> которых параметрами являются вещественные числа, или результат
> этих функций является вещественным числом (это уже относится
> не к математике, а к программированию) легко создать.


В основном результыты математических вычислений совершенно спокойно можно сравнивать между собой, так как, в отличие от методов вычислений, используемых в вычислительной технике, в математике результат вычислений (при получении точных промежуточных результатов - где это возможно), является во множестве случаев конечным числом.

Всё зависит от цели сравнения.
Поэтому говорить, что нельзя сравнивать вещественные числа на равенство - неверно. И неверно даже в общем случае.


 
Германн ©   (2009-03-14 00:50) [40]


> Тын-Дын ©   (14.03.09 00:27) [39]
>
>
> > Германн ©   (13.03.09 01:08) [35]
> >Попробую.Искусственные ситуации, в которых
> > мы можем сравнивать результат математических функций,
> в
> > которых параметрами являются вещественные числа, или результат
> > этих функций является вещественным числом (это уже относится
> > не к математике, а к программированию) легко создать.
>
>
> В основном результыты математических вычислений совершенно
> спокойно можно сравнивать между собой, так как, в отличие
> от методов вычислений, используемых в вычислительной технике,
>  в математике результат вычислений (при получении точных
> промежуточных результатов - где это возможно), является
> во множестве случаев конечным числом.
>
> Всё зависит от цели сравнения.
> Поэтому говорить, что нельзя сравнивать вещественные числа
> на равенство - неверно. И неверно даже в общем случае.
>

Во-первых, я говорил именно о "строгом" равенстве. Причём при сравнении некоего результата с некоей константой. (Как и было в сабже).
Во-вторых, я всё таки имел в виду скорее физику, чем математику. (У меня диплом именно физика).
В-третьих, Моё "БЕЗАПЕЛЛЯЦИОННОЕ" (постарался указать почти все "выделения", которые я в нём использовал :) высказывание в [8] было вызвано теми причинами, за которые я уже принёс свои извинения в [35].
И, наконец. В-четвёртых. Уже много на сём форуме видел вопросов, в которых авторы удивлялись "почему не срабатывает" подобное сравнение. Поэтому и попробовал наставить автора на путь истинный таким "громогласным" образом. (Типа "шоковой терапии" :).
Надеюсь, что "пронял" автора :)

P.S. В-пятых меня смутил АП.
Чтоб ему пусто было :)



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.007 c
3-1219997680
quart
2008-08-29 12:14
2009.04.26
SQL в Infromix


4-1208886633
Дмитрий С
2008-04-22 21:50
2009.04.26
Заменить ReadFile на свой.


2-1236602499
игяи
2009-03-09 15:41
2009.04.26
Изменение размера формы


2-1236858762
Андрей (начинающий)
2009-03-12 14:52
2009.04.26
Модальная форма


15-1235672067
Кое кто
2009-02-26 21:14
2009.04.26
англо-русский сайт





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский