iOS定时器/工资计算器

iOS定时器/工资计算器,ios,objective-c,Ios,Objective C,我正在制作一个计时器,它记录每小时的工资输入,并跟踪每秒的收入。计时器上的格式工作正常,但一旦硬币达到99,它就会归零,只会增加美元。这是我得到的 seconds = (int) (elapsedTime = (elapsedTime - (minutes *60))); pennies = seconds * (ratePerSecond * 100); if(pennies > 99){ dollars++; pennies = 0; } self.moneyDis

我正在制作一个计时器,它记录每小时的工资输入,并跟踪每秒的收入。计时器上的格式工作正常,但一旦硬币达到99,它就会归零,只会增加美元。这是我得到的

seconds = (int) (elapsedTime = (elapsedTime - (minutes *60)));
pennies = seconds * (ratePerSecond * 100);
if(pennies > 99){

    dollars++;
    pennies = 0;
}

self.moneyDisplay.text = [NSString stringWithFormat: @"$%02d.%02d", dollars, pennies];
试试这个:

seconds = (int) (elapsedTime = (elapsedTime - (minutes *60)));
pennies = seconds * (ratePerSecond * 100);
float dollars = pennies / 100.0;
self.moneyDisplay.text = [NSString stringWithFormat: @"$%.2f", dollars];
或:


您可能希望执行此操作(无if条件):

请注意:%运算符的操作数应为整数类型。


希望这有帮助:)

moneyDisplay将便士相加到.99,然后变为1.00、2.00、3.00……基本上,它会卡在我的for循环中,即使我将便士重置为0。您将
便士重置为
0
,但下次通过循环时,您会立即将其更改为
便士=秒*(ratePerSecond*100)它将再次超过100。一旦它第一次超过99,每次都会超过99,因此每次循环中,你的
if
语句都会计算为true,你会增加
美元
并再次将
便士
重置为零,它只会一遍又一遍地做同样的事情。在您的代码中,将
便士
更改为零会影响您给
self.moneyDisplay.text
的值,但随后循环将表现为从未发生过。是的,我意识到Paul。谢谢你解释原因。我想不出来。将其更改为便士=便士%100;修好了,什么回路?您没有在问题中发布任何循环。在向下投票时,请添加您为什么这样做的评论。你的否决票不会改变我,也许你的解释可以。这是一个低质量的答案。将
if
块中的两行替换为答案中的两行将产生非常奇怪的结果。如果你的意思是别的,你还没有解释。您还拼错了其中一个变量。
seconds = (int) (elapsedTime = (elapsedTime - (minutes *60)));
pennies = seconds * (ratePerSecond * 100);
int cents = pennies % 100;
int dollars = pennies / 100;
self.moneyDisplay.text = [NSString stringWithFormat: @"$%02d.%02d", dollars, cents];
dollars = pennies / 100;
pennies = pennies % 100;
self.moneyDisplay.text = [NSString stringWithFormat: @"$%02d.%02d", dollars, pennies];