业务场景
在程序开发中常需要将实数的各位对应的数字取出来,例如:
- 对于实数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;
}