私は(あまり成功せずに)短いc ++関数を書き込もうとしています:
2桁(double x、int b、int d)
これは、数値xの基数b展開のd番目の桁を返します。これは、正または負の場合があり、分数の場合もあります。dが負の場合、10進数の後の数字を返す必要があります(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ベースのソリューションのみです。