转换速度:m / s为km / h

时间:2012-11-11 20:49:22

标签: objective-c

我是Objective-C的新手,希望能将MPS转换为KPH。

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

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

3 个答案:

答案 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)]);