程序取某位数字口诀

204 阅读1分钟

业务场景

在程序开发中常需要将实数的各位对应的数字取出来,例如:

  • 对于实数321,其百位为3 十位为2 个位为1

口诀

下面记录一条口诀能够快速求出实数相应位的数字: 先余后除

举例

  • 比如:取321的百位数字,就用321对1000取余再除100,321%1000的结果是321,321除100的结果是3,这样就得到了百位数字3;
  • 同理,取十位上的数字的做法为:321对100取余再除10;取各位上的数字的做法就是:321对10取余数再除1.
  • 那么规律就是对上一位取余,再除以本位

优势

这种做法的一个优势在于适用性广泛,对于实数321,如果想要求出其千位数字,那么应该先用321对10000取余,得到321然后除以1000,得到0,也就是321的千位数字是0,这是正确的!

代码实现

function getNumAt(num, position) {
    const _a = 10 ** (position + 1);
    const _b = 10 ** position;
    const _tmp = num % _a;
    const _rst = Math.floor(_tmp / _b);
    return _rst;
}
#include<stdio.h>  
#include<conio.h>  
#include<math.h>  
  
int getNumAt(int num, int position);  
  
int main(void)  
{  
    int num = 321;  
    int position = 2;  
    int rst = getNumAt(num, position);  
    printf("%d", rst);  
    getchar();  
    return 0;  
}  
  
int getNumAt(int num, int position)  
{  
    int _a = pow(10, position + 1);  
    int _b = pow(10, position);  
    int _tmp = num % _a;  
    int _rst = _tmp / _b;  
    return _rst;  
}