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

Вниз

Проблемы с плавающей запятой   Найти похожие ветки 

 
Bolg   (2012-07-19 16:42) [0]

Вопрос такой: почему эта строчка в моем проекте выдает 0 а в пустой программе больше 0?
floattostr(incsecond(now)-now)


 
Германн ©   (2012-07-19 17:04) [1]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


 
Bolg   (2012-07-19 17:19) [2]

Спасибо, так работает
Set8087CW(Get8087CW or $0100);
floattostr(incsecond(now)-now);

есть какие-то подводные камни?


 
Inovet ©   (2012-07-19 17:53) [3]

> [2] Bolg   (19.07.12 17:19)
> есть какие-то подводные камни?

Конечно, потом будет в другом месте не так, как ожидается работать.


 
Dimka Maslov ©   (2012-07-19 18:09) [4]


> есть какие-то подводные камни?


контрольное слово сопроцессора глобально для всех процессов в системе. Его надо приводить к нужному виду каждый раз перед началом вычислений. Иначе любой другой процесс может невозбранно его поменять в свои сугубо личных интересах.


 
Bolg   (2012-07-19 18:53) [5]

Я так понял именно DirectX ставит меньшую точность и не возвращает ее назад


 
Anatoly Podgoretsky ©   (2012-07-19 19:01) [6]


> есть какие-то подводные камни?
> floattostr(incsecond(now)-now);

Конечно ведь тут вызов два раза не реентерабельной фукции, результат непредсказуемый, зависит от погоды на Марсе


 
Bolg   (2012-07-19 19:47) [7]

Ну это был пример, а сам рабочий код выглядит так:
time.Now:=time.Now+time.Speed*timegap;
Где time.Speed принимает значения
EncodeTime(0,0,1,0)
EncodeTime(0,1,0,0)
EncodeTime(1,0,0,0)
EncodeTime(23,59,59,999)

Работает норм


 
Германн ©   (2012-07-20 02:23) [8]


> Bolg   (19.07.12 19:47) [7]
>
> Ну это был пример, а сам рабочий код выглядит так:
> 1
>  
> time.Now:=time.Now+time.Speed*timegap;
>
> Где time.Speed принимает значения
> 1
> 2
> 3
> 4
>  
> EncodeTime(0,0,1,0)
> EncodeTime(0,1,0,0)
> EncodeTime(1,0,0,0)
> EncodeTime(23,59,59,999)
>
> Работает норм
>

А в чём тогда проблема?


 
AV ©   (2012-07-20 09:49) [9]

есть

var
 R: Double;
begin
 repeat
   R := now-now;
   if R <> 0 then
     mmo1.Lines.Add(FloatToStr(R));
 until mmo1.Lines.Count > 10;

-1,85187673196197E-7
-1,85187673196197E-7
-1,85187673196197E-7
-1,85180397238582E-7
-1,73611624632031E-7
-1,73611624632031E-7
-1,85187673196197E-7
-1,85187673196197E-7
-1,73611624632031E-7
-1,85187673196197E-7


 
Inovet ©   (2012-07-20 12:15) [10]

> [9] AV ©   (20.07.12 09:49)

Так и год может быть.


 
Anatoly Podgoretsky ©   (2012-07-20 12:43) [11]

Не может быть


 
AV ©   (2012-07-20 13:00) [12]


> Inovet ©   (20.07.12 12:15) [10]

день уже
> Не может быть

имхо.


 
Inovet ©   (2012-07-20 14:15) [13]

> [11] Anatoly Podgoretsky ©   (20.07.12 12:43)
> Не может быть

Это почему не может?


 
Anatoly Podgoretsky ©   (2012-07-20 14:22) [14]

Потому что он убивается формулой now-now


 
Inovet ©   (2012-07-20 14:32) [15]

> [14] Anatoly Podgoretsky ©   (20.07.12 14:22)
> Потому что он убивается формулой now-now

А если между вызовами Now() сделать процессу Suspend на год? Ну так вот иногда попадёт.


 
Anatoly Podgoretsky ©   (2012-07-20 14:44) [16]

> Inovet  (20.07.2012 14:32:15)  [15]

Кто к нас с Suspend придет, тот от него и погибнет


 
AV ©   (2012-07-20 14:44) [17]


> Inovet ©   (20.07.12 14:32) [15]


:)

function CalcAddYear (NumY: integer);
begin
  Sleep(NumY*365*24*60*60);
  Result := now;
end;


 
Омлет ©   (2012-07-20 15:25) [18]

Я уже как-то сетовал: http://delphimaster.net/view/15-1305794033



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

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

Наверх




Память: 0.48 MB
Время: 0.085 c
15-1350643594
Grimm375
2012-10-19 14:46
2013.03.22
Информировать, какие символы разрешено вводить


15-1351606208
Дмитрий С
2012-10-30 18:10
2013.03.22
Как в var параметр передать nil?


15-1333225802
Юрий
2012-04-01 00:30
2013.03.22
С днем рождения ! 1 апреля 2012 воскресенье


2-1339918135
Pcrepair
2012-06-17 11:28
2013.03.22
Структура кода при обработке текстов


2-1328181215
harisma
2012-02-02 15:13
2013.03.22
Корректно освободить память





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский