我是 Objective-C 的新手,在将 MPS 转换为 KPH 方面需要一些帮助。
以下是我当前的速度字符串。有人可以指出还需要什么吗?
speed.text = newLocation.speed < 0 ? @"N/A": [NSString stringWithFormat:@"%d", (int)newLocation.speed];
我是 Objective-C 的新手,在将 MPS 转换为 KPH 方面需要一些帮助。
以下是我当前的速度字符串。有人可以指出还需要什么吗?
speed.text = newLocation.speed < 0 ? @"N/A": [NSString stringWithFormat:@"%d", (int)newLocation.speed];
m/s 到 km/h = (m/s) * (60*60)/1000
或 1m/s = 3.6km/h
float speedInKilometersPerHour = newLocation.speed*3.6;
if (speedInKilometersPerHour!=0) {speed.text = [NSString stringWithFormat:@"%f", speedInKilometersPerHour];}
else speed.text = [NSString stringWithFormat:@"No Data Available"];
这是一种方法(我已将其格式化为更具可读性):
if (newLocation.speed < 0)
speed.text = @"N/A";
else
speed.text = [NSString stringWithFormat:@"%d", (int)(newLocation.speed * 3.6)];
但是请注意,您确实应该使用数字格式化程序将数字转换为本地化字符串,然后再将其显示给用户,以便在他们自己的语言环境中正确格式化:
if (newLocation.speed < 0)
{
speed.text = @"N/A";
}
else
{
int speedKPH = (int)(newLocation.speed * 3.6);
NSNumber *number = [NSNumber numberWithInt:speedKPH];
NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
speed.text = [formatter stringFromNumber:number];
}
假设您的意思是每秒米到每小时公里,并且您希望我们修改您现有的三元组,那么这将完成这项工作。
speed.text = (newLocation.speed < 0) ? (@"N/A") : ([NSString stringWithFormat:@"%d", (int)(newLocation.speed*3.6)]);
如果 MPS 中的原始速度小于零,则不适用,否则将其转换。
您还应该将结果四舍五入到最接近的整数,以便更准确。
speed.text = (newLocation.speed < 0) ? (@"N/A") : ([NSString stringWithFormat:@"%d", (int)((newLocation.speed*3.6)+0.5)]);