C 幂函数的输出不同,值来自变量还是固定数

C 幂函数的输出不同,值来自变量还是固定数,c,C,我试图将一个数字分解成数字,当我用(我认为)等价的变量替换这些值时,手动赋值的方法不起作用。这是相关代码。 这将输出“5、9、6”: 但这会产生“5,0,7”: 由于pow()函数将double作为输入,我尝试将m转换为double,但这也会得到“5,0,7”。n必须是整数,模运算符才能工作,用“695”替换n的实例也会失败。浮点计算可能包含错误 当由于错误导致意外截断较小整数而产生错误输出时,添加较小的值可以减少由于错误而获得错误输出的机会 试试这个: int n = 695, m = 1;

我试图将一个数字分解成数字,当我用(我认为)等价的变量替换这些值时,手动赋值的方法不起作用。这是相关代码。 这将输出“5、9、6”:

但这会产生“5,0,7”:


由于pow()函数将double作为输入,我尝试将m转换为double,但这也会得到“5,0,7”。n必须是整数,模运算符才能工作,用“695”替换n的实例也会失败。

浮点计算可能包含错误

当由于错误导致意外截断较小整数而产生错误输出时,添加较小的值可以减少由于错误而获得错误输出的机会

试试这个:

int n = 695, m = 1;
double EPS = 1e-7;
printf("%d\n", n % (int) (pow(10, m)+EPS) / (int) (pow(10, m - 1)+EPS)); m++;
printf("%d\n", n % (int) (pow(10, m)+EPS) / (int) (pow(10, m - 1)+EPS)); m++;
printf("%d\n", n % (int) (pow(10, m)+EPS) / (int) (pow(10, m - 1)+EPS));
    int n = 695, m = 1;
    printf("%d\n", n % (int) pow(10, m) / (int) pow(10, m - 1)); m++;
    printf("%d\n", n % (int) pow(10, m) / (int) pow(10, m - 1)); m++;
    printf("%d\n", n % (int) pow(10, m) / (int) pow(10, m - 1));
int n = 695, m = 1;
double EPS = 1e-7;
printf("%d\n", n % (int) (pow(10, m)+EPS) / (int) (pow(10, m - 1)+EPS)); m++;
printf("%d\n", n % (int) (pow(10, m)+EPS) / (int) (pow(10, m - 1)+EPS)); m++;
printf("%d\n", n % (int) (pow(10, m)+EPS) / (int) (pow(10, m - 1)+EPS));