私は 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"];
メートル/秒からキロメートル/時を意味し、既存の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)]);
これを行う1つの方法を次に示します(もう少し読みやすいようにフォーマットしました):
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];
}