我正在尝试(没有多大成功)编写一个简短的 c++ 函数:
两位数(双 x,int b,int d)
返回数字 x 的 base-b 扩展中的第 d 位,可以是正数或负数,并且可以是分数。当 d 为负数时,它应该返回小数点后的数字(对于 d=0,它的下定义,所以说在这种情况下它返回 0)。例如:
const double x = 25.73;
for (int n = -5; n <= 5; n++)
cout<<digit(x,10,n)<<' ';
应该打印:0 0 0 3 7 0 5 2 0 0 0
该函数必须仅使用循环、if、exp、pow、log、floor 和 ceil。即,没有 sprintf 技巧等。
谢谢!!!
编辑:为简单起见,假设 2<=b<=10
编辑:也请避免使用 mod,只使用基于 pow-exp-log-floor-ceil 的解决方案