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中解决这个问题?以及我原来的问题。
答案 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]
会返回距离当前时间NSDate
秒seconds
秒的startDate
个对象。在这种情况下,我在当前日期前16天创建了它。根据评论,在您的情况下,您还希望使用[NSDate date]
创建{{1}},然后将其存储在某个位置,以便您可以计算它与某个时间点之间的当前时间之间的差异。未来。