4

我是 Objective-C 的新手,在将 MPS 转换为 KPH 方面需要一些帮助。

以下是我当前的速度字符串。有人可以指出还需要什么吗?

speed.text = newLocation.speed < 0 ? @"N/A": [NSString stringWithFormat:@"%d", (int)newLocation.speed];
4

3 回答 3

5

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"];
于 2012-11-11T21:00:54.250 回答
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];
}
于 2012-11-11T21:08:52.987 回答
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)]);
于 2012-11-11T21:23:45.887 回答