Эта версия (в Дельфи) является ничем специальным, но это, по крайней мере, быстрее, чем версия Nick Hodge, отправленный на его блоге :). На моей машине требуется приблизительно 16 секунд, чтобы сделать миллиард повторений, давая значение 3.14159265 25879 (точная часть полужирным).
program calcpi;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
start, finish: TDateTime;
function CalculatePi(iterations: integer): double;
var
numerator, denominator, i: integer;
sum: double;
begin
{
PI may be approximated with this formula:
4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 .......)
//}
numerator := 1;
denominator := 1;
sum := 0;
for i := 1 to iterations do begin
sum := sum + (numerator/denominator);
denominator := denominator + 2;
numerator := -numerator;
end;
Result := 4 * sum;
end;
begin
try
start := Now;
WriteLn(FloatToStr(CalculatePi(StrToInt(ParamStr(1)))));
finish := Now;
WriteLn('Seconds:' + FormatDateTime('hh:mm:ss.zz',finish-start));
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
Я не совсем уверен, что вы пытаетесь сделать, но вы можете создать объект NSDate, добавив время в секундах на другой NSDate, используя:
- (id) dateByAddingTimeInterval: (NSTimeInterval) seconds
// например. чтобы добавить 8 часов к текущему времени:
NSDate *mydate = [NSDate date];
NSTimeInterval secondsInEightHours = 8 * 60 * 60;
NSDate *dateEightHoursAhead = [mydate dateByAddingTimeInterval:secondsInEightHours];
Вы можете просто добавить 8 * 3600 к значению вашей базы данных ( при условии, что преобразованное двойное значение представляет секунды).