Xcode 、Android開発で4桁の 数値 で、千、百、十、一の位で数値を取得する方法です。
例 1234 →千の位:1、百の位:2、十の位:3、一の位:4
※4桁以外でもこの考えを応用すると使用可能です。
以下2方法があります。
1.計算により取得
2.数値型から文字型に変換して、再度数値型に変換
1.計算により取得
計算により各桁を取得していきます。
X_num:4桁の数値の変数
千の位:X_num_a、百の位:X_num_b、十の位:X_num_c、一の位:X_num_d
Objective-cの場合
NSInteger X_num_a = X_num / 1000; NSInteger X_num_b = (X_num - (X_num_a * 1000)) / 100; NSInteger X_num_c = (X_num - (X_num_a * 1000) - (X_num_b * 100)) / 10; NSInteger X_num_d = X_num - (X_num_a * 1000) - (X_num_b * 100) - (X_num_c * 10);
・十から千の位の計算は、NSInteger型のため計算結果で小数点以下が発生しても対象外となります。
・X_num_dの計算で、X_num_cの計算式と同様の式で余り(/ → %)を求める計算もあります。
Androidの場合
int X_num_a = X_num / 1000; int X_num_b = (X_num - (X_num_a * 1000)) / 100; int X_num_c = (X_num - (X_num_a * 1000) - (X_num_b * 100)) / 10; int X_num_d = X_num - (X_num_a * 1000) - (X_num_b * 100) - (X_num_c * 10);
2.数値型から文字型に変換して、再度数値型に変換
数字を文字に変換して、文字列操作を行い各桁の値を取得します。
1000以上(千の位が1以上)でない場合、桁数がずれる可能性があります。
Objective-cの場合
NSInteger X_num = 1234; //数字型から文字型に変換 NSString *X_num_str = [NSString stringWithFormat:@"%ld",X_num]; //文字型で桁数で取得 NSString *X_num_a_str = [X_num_str substringWithRange:NSMakeRange(0,1)]; NSString *X_num_b_str = [X_num_str substringWithRange:NSMakeRange(1,1)]; NSString *X_num_c_str = [X_num_str substringWithRange:NSMakeRange(2,1)]; NSString *X_num_d_str = [X_num_str substringWithRange:NSMakeRange(3,1)]; //文字型を数値型に変換 NSInteger X_num_a = [X_num_a_str intValue]; NSInteger X_num_b = [X_num_b_str intValue]; NSInteger X_num_c = [X_num_c_str intValue]; NSInteger X_num_d = [X_num_d_str intValue]; //複合型も可能 NSInteger X_num_a = [[NSString stringWithFormat:@"%ld",X_num] substringWithRange:NSMakeRange(0,1)] intValue]; NSInteger X_num_b = [[NSString stringWithFormat:@"%ld",X_num] substringWithRange:NSMakeRange(1,1)] intValue]; NSInteger X_num_c = [[NSString stringWithFormat:@"%ld",X_num] substringWithRange:NSMakeRange(2,1)] intValue]; NSInteger X_num_d = [[NSString stringWithFormat:@"%ld",X_num] substringWithRange:NSMakeRange(3,1)] intValue];
Androidの場合
//数字型から文字型に変換 String X_num_str = String.valueOf(X_num); //文字型で桁数で取得 String X_num_a_str = X_num_str.substring(0,1); String X_num_b_str = X_num_str.substring(1,1); String X_num_c_str = X_num_str.substring(2,1); String X_num_d_str = X_num_str.substring(3,1); //文字型を数値型に変換 int X_num_a = Integer.parseInt(X_num_a_str); int X_num_b = Integer.parseInt(X_num_b_str); int X_num_c = Integer.parseInt(X_num_c_str); int X_num_d = Integer.parseInt(X_num_d_str);