半衰期公式〜目标-C

时间:2014-04-25 20:48:30

标签: objective-c

Nt = N0e-λt

N0是初始数量 Nt是时间t后仍然存在的数量, t1 / 2是半衰期 τ是平均寿命 λ是衰减常数

我非常坚持如何将其变成Objective-c的公式,我需要它。

double sourceStart = [textField.text doubleValue];
double sourceNow = 0;
double daysBetween = 8;

if (textField.text.length > 0) {
    //Find how many half lives have been accumulated
    double totalNumberOfHalfLives = daysBetween / sourceHalfLife;
    //Find the factor
    double reductionFactor = pow(0.5, totalNumberOfHalfLives);
    //Find the source strength now
    double sourceNow = sourceStart * reductionFactor;
}

我假设我需要一些很长的内容?或完全错误。

然后,我还需要能够找到一段时间之间已经过了多少天。开始日期= 4月15日现在日期= 4月25日,10天之间..我如何在目标c中解决这个问题?以及我原来的问题。

1 个答案:

答案 0 :(得分:1)

这样做(在C语言中,但它在Objective-C中按原样运行,你可以很容易地提取逻辑):

#include <stdio.h>
#include <math.h>

int main(void) {
    double start_quantity = 100;
    double half_life = 8;
    double days = 16;
    double end_quantity = start_quantity * pow(0.5, days / half_life);

    printf("After %.1f days with a half life of %.1f days, %.1f decays to %.1f.\
n",
            days, half_life, start_quantity, end_quantity);

    return 0;
}

和输出:

paul@local:~/src$ ./halflife
After 16.0 days with a half life of 8.0 days, 100.0 decays to 25.0.
paul@local:~/src$ 

对于问题的第二部分,您可以将日期存储在NSDate中,并使用timeIntervalSinceDate:方法在几秒钟内获取它们之间的时间。像这样:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{ 
    @autoreleasepool {
        const int kSecsInADay = 86400;

        NSDate * startDate = [NSDate dateWithTimeIntervalSinceNow:-16 * kSecsInADay];
        NSDate * endDate = [NSDate date];

        NSTimeInterval seconds_diff = [endDate timeIntervalSinceDate:startDate];
        double days_diff = seconds_diff / kSecsInADay;

        NSLog(@"There are %.1f days between %@ and %@.", days_diff,
              [startDate description], [endDate description]);
    }
    return 0;
}

输出:

There are 16.0 days between 2014-04-09 21:41:12 +0000 and 2014-04-25 21:41:12 +0000.

注意:

  • [NSDate date]返回表示当前时间的NSDate对象。

  • [NSDate dateWithTimeIntervalSinceNow:seconds]会返回距离当前时间NSDateseconds秒的startDate个对象。在这种情况下,我在当前日期前16天创建了它。根据评论,在您的情况下,您还希望使用[NSDate date]创建{{1}},然后将其存储在某个位置,以便您可以计算它与某个时间点之间的当前时间之间的差异。未来。