Главная страница
    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.063 c
2-1339183336
простофан
2012-06-08 23:22
2013.03.22
rewrite


15-1341001802
Юрий
2012-06-30 00:30
2013.03.22
С днем рождения ! 30 июня 2012 суббота


15-1336722340
xayam
2012-05-11 11:45
2013.03.22
Шахматы, май 2012: Ананд - Гельфанд


1-1295539361
gosha52
2011-01-20 19:02
2013.03.22
Заголовок окна при стиле bsToolWindow в Aero


2-1336127281
__QWERTY
2012-05-04 14:28
2013.03.22
как правильно очистить TList ы, чтобы не было утечек памяти





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