Форум: "Начинающим";
Текущий архив: 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.051 c