Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Int不懂数学?_Ios_Math_Int - Fatal编程技术网

Ios Int不懂数学?

Ios Int不懂数学?,ios,math,int,Ios,Math,Int,我将in值设置为10。A然后使用以下代码运行NSTimer: [NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(UpdateTime)userInfo:nil repeats:YES]; 我的空虚看起来像这样 -(void)updateTimer { timeLeft = timeLeft -0.01; NSString *string = [NSString stringWith

我将in值设置为10。A然后使用以下代码运行NSTimer:
[NSTimer scheduledTimerWithTimeInterval:0.01目标:自选择器:@selector(UpdateTime)userInfo:nil repeats:YES];
我的空虚看起来像这样

  -(void)updateTimer {
         timeLeft = timeLeft -0.01;
         NSString *string = [NSString stringWithFormat:@"%i",timeLeft];
         [timer setString:string];
         NSLog(string);

     }
2012-06-05 17:28:56.030 NumberPop[31291:10a03] 9
2012-06-05 17:28:57.030 NumberPop[31291:10a03] 8
2012-06-05 17:28:58.030 NumberPop[31291:10a03] 7
2012-06-05 17:28:59.030 NumberPop[31291:10a03] 6
2012-06-05 17:29:00.030 NumberPop[31291:10a03] 5
2012-06-05 17:29:01.030 NumberPop[31291:10a03] 4
2012-06-05 17:29:02.030 NumberPop[31291:10a03] 3
2012-06-05 17:29:03.030 NumberPop[31291:10a03] 2
2012-06-05 17:29:04.029 NumberPop[31291:10a03] 1
2012-06-05 17:29:05.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:06.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:07.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:08.030 NumberPop[31291:10a03] 0
2012-06-05 17:29:09.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:10.030 NumberPop[31291:10a03] 0
2012-06-05 17:29:11.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:12.029 NumberPop[31291:10a03] 0
我正在使用Coco2D,这不是问题所在 在我的日志中是这样的

  -(void)updateTimer {
         timeLeft = timeLeft -0.01;
         NSString *string = [NSString stringWithFormat:@"%i",timeLeft];
         [timer setString:string];
         NSLog(string);

     }
2012-06-05 17:28:56.030 NumberPop[31291:10a03] 9
2012-06-05 17:28:57.030 NumberPop[31291:10a03] 8
2012-06-05 17:28:58.030 NumberPop[31291:10a03] 7
2012-06-05 17:28:59.030 NumberPop[31291:10a03] 6
2012-06-05 17:29:00.030 NumberPop[31291:10a03] 5
2012-06-05 17:29:01.030 NumberPop[31291:10a03] 4
2012-06-05 17:29:02.030 NumberPop[31291:10a03] 3
2012-06-05 17:29:03.030 NumberPop[31291:10a03] 2
2012-06-05 17:29:04.029 NumberPop[31291:10a03] 1
2012-06-05 17:29:05.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:06.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:07.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:08.030 NumberPop[31291:10a03] 0
2012-06-05 17:29:09.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:10.030 NumberPop[31291:10a03] 0
2012-06-05 17:29:11.029 NumberPop[31291:10a03] 0
2012-06-05 17:29:12.029 NumberPop[31291:10a03] 0
0将永远持续下去。
我太迷路了,有什么帮助吗?

所以很奇怪为什么你要从一个整数中减去.01。但是当你这样做的时候,结果会被截断为一个整数。所以如果你从9中减去.01,你会得到8.99,但int不能存储8.99,所以它被简单地存储为8。一旦降到0,它也会做同样的事情。0-.01=-0.01,被截断为0。所以你的作业总是零分

相反,请尝试以下方法:

timeLeft --;
if (timeLeft <= 0) [timer invalidate];
timeLeft=timeLeft-1

甚至更好

timeLeft--

上述任何一项都将继续递减零以下的整数,例如:-1,-2,-3。。。。当然,假设它是一个无符号int(即
int
is)

此外,如果您希望将计时器停止在零,则需要在剩余时间达到零时使其无效。查看此处了解更多信息:

基本上,这样做:

timeLeft --;
if (timeLeft <= 0) [timer invalidate];
timeLeft--;

如果(timeLeft所以很奇怪为什么你要从int中减去.01。但是当你这样做的时候,结果会被截断为int。所以如果你从9中减去.01,你会得到8.99,但是int不能存储8.99,所以它被存储为8。一旦你降到0,它会做同样的事情。0-.01=-0.01,它会被截断为0。所以你会总是从那个任务中得到零

相反,请尝试以下方法:

timeLeft --;
if (timeLeft <= 0) [timer invalidate];
timeLeft=timeLeft-1;

甚至更好

timeLeft--;

上述任何一项都将继续递减小于零的整数,例如:-1,-2,-3…当然,假设它是一个无符号int(即
int
是)

此外,如果您希望将计时器停止在零,则需要在剩余时间达到零时使其无效。有关详细信息,请查看此处:

基本上,这样做:

timeLeft --;
if (timeLeft <= 0) [timer invalidate];
timeLeft--;

如果(timeLeft我看不出有停止的条件。如果你指望减法精确地停止在零,我会说你不明白浮点数是如何工作的。你不能把0.1精确地表示为二进制,就像你不能把1/3精确地表示为十进制一样。我看不出有停止的条件。如果你指望减法精确地停止exa确切地说,在0,我会说你不明白浮点数是如何工作的。你不能将0.1精确地表示为二进制,正如你不能将1/3精确地表示为十进制一样。那么是否可能显示一个“精细”计时器?这取决于你所寻找的“精细”程度。通常,运行循环非常快,除非有繁重的图形(或其他)正在处理。但如果是这样的话,你的显示器无论如何都跟不上,所以这个问题没有意义。当屏幕每次循环只更新一次时,更新标签、进度条等是毫无意义的。但是我在.01运行计时器时没有任何问题。还意识到.01是每秒100帧……这相当高,通常是不必要的。Wh我的意思是:我能得到像10.900这样的计时器输出吗?那么有可能显示“精细”计时器吗?这取决于你所寻找的“精细”程度。一般来说,运行循环非常快,除非有很重的图形(或其他)正在处理。但如果是这样的话,你的显示器无论如何都跟不上,所以这个问题没有意义。当屏幕每次循环只更新一次时,更新标签、进度条等是毫无意义的。但是我在.01运行计时器时没有任何问题。还意识到.01是每秒100帧……这相当高,通常是不必要的。Wh我的意思是:我能得到像10.900这样的定时器输出吗?