Главная страница
    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.111 c
15-1350489704
Artem
2012-10-17 20:01
2013.03.22
Изменение размера окна в семерке и хр.


3-1284687349
Александр Т
2010-09-17 05:35
2013.03.22
Трехзвенка: зависание при одновременном подключении клиентов


2-1333222748
Dima335
2012-03-31 23:39
2013.03.22
custom paint


2-1345708838
Molchanov
2012-08-23 12:00
2013.03.22
Высокоскоростной обмен с аппаратурой


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