我是Objective-C的新手,希望能将MPS转换为KPH。
以下是我当前的速度字符串。有人可以指出还需要什么吗?
speed.text = newLocation.speed < 0 ? @"N/A": [NSString stringWithFormat:@"%d", (int)newLocation.speed];
答案 0 :(得分:3)
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"];
答案 1 :(得分:3)
这是一种方法(我将其格式化为更具可读性):
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];
}
答案 2 :(得分:3)
假设你的意思是每小时每公里米数,你希望我们修改现有的三元组,而不是这样做。
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)]);