我有一个不起作用的计算,我无法弄明白为什么!
int numHoursInWeek;
int numDays;
int averageSalary;
int total_seconds_in_year = ((numHoursInWeek * 60 * 60) * numDays);
NSLog(@"average sal in pence=%i", (averageSalary * 100));
NSLog(@"num seconds in year=%i", total_seconds_in_year);
NSLog(@"cost per second=%i", ((averageSalary * 100) / total_seconds_in_year));
int cost_per_person_per_second = ((averageSalary*100) / total_seconds_in_year);
costPerSecond = (cost_per_person_per_second * numPeople);
lblCostPerPerson.text = [NSString stringWithFormat:@"%.2f",cost_per_person_per_second];
以上在NSLog中返回以下内容
average sal in pence=3400000
num seconds in year=31968000
cost per second=-1.991753
我知道其他一切设置正确(例如,numDays,averageSalary)。 当我手动进行计算时,我得到0.1063。那应该显示在我的标签上? (每人每秒的费用)。
任何想法?我应该使用浮点数代替整数的整数吗?
答案 0 :(得分:8)
进行整数除法时,数字会被截断,所以:
6 / 4
>>> 1
将您的数据类型更改为float或double,并将所有数字写为“100.0” - 否则将被视为int。
答案 1 :(得分:2)
看着
total_seconds_in_year = ((numHoursInWeek * 60 * 60) * numDays);
不应该是
total_seconds_in_year = ((numHoursInWeek * 60 * 60) * numWeeks);
或
total_seconds_in_year = ((numHoursInDay * 60 * 60) * numDays);
答案 2 :(得分:1)
使用"%f"
时,请确保参数为float或double,而不是整数。 GCC会针对printf
向您发出警告,但出于某种原因,它无法为stringWithFormat:
执行此操作。