숫자의 모든 개별 자릿수 가져오기(TypeScript)

3601 단어 mathtypescriptnumbers
주어진 숫자의 각 자리를 "추출"해야 합니까? 그렇다면 이 작은 TypeScript 프로그램이 바로 여러분이 찾고 있는 것일 것입니다. "안전한"입력 범위에 대한 몇 가지 중요한 설명을 삽입했으므로 중요한 세그먼트에서 사용하기 전에 이를 알고 있는지 확인하십시오. 다양한 솔루션이 있습니다. 이 솔루션은 내부적으로 숫자를 문자열로 변환하지 않으므로 순수한 수학적 알고리즘입니다. (참고: 주어진 번호가 0 인 경우 올바르게 작동하도록 코드를 업데이트했습니다.)

/**
 * @param num A number in the int32 range [-2147483648 .. 2147483647]
 * @returns A number[] containing each digit of `num`.
 * If negative `num` given, resulting array will contain negatives numbers.
 */
function separateDigits(num: number): number[] {
  let arr: number[] = [];
  let lastDigit: number;

  num = toInt32(num);

  do {
    lastDigit = num % 10;
    arr.push(lastDigit);
    // Updating num to num/10 cuts off the last digit:
    num = toInt32(num / 10);
  }
  while (num !== 0);

  return arr.reverse();
}

/**
* Fast bitwise operation, truncates floating point number resulting in int32.
* The >> bitwise operator is used, an overflow occurs if number too large.
* A *safe* integer division in JavaScript would be Math.floor(x/y);
* @param f A (JavaScript) number between [-2147483648.999 .. 2147483647.999]
* @returns Input 'f' truncated to Int32.
*/
function toInt32(f: number): number {
  // Note that type "number" in JS is always "float" internally.
  return f >> 0;
}

console.log(separateDigits(3142520));

// Output:
// [3, 4, 1, 2, 5, 2, 0]

좋은 웹페이지 즐겨찾기