用相同值和类型的变量替换常量,会导致不同的结果。

int main()
{
    int nodes = 7;

    int var_1 = (int)(log((double)(nodes + 1))/log(2) - 1);
    int var_2 = (int)(log((double)(7 + 1))/log(2) - 1);

    printf("%d\n", var_1);
    printf("%d\n", var_2);

    return 0;
}

上面的代码初始化了varialbes var_1var_2 相应地变成值1和2。

为什么它们的值不同,因为变量 nodes 的值为7,与下一个公式中的常数相同。

编辑:我不尝试 “修复 “代码,否则我可以直接将其分配给 nodes+1 到一个变量。

解决方案:

第一条语句可能是在运行时由标准库中预编译的代码计算出来的(用libm),第二条语句可能是在编译时由编译器计算出来的(用MPFR)。

可能是 log(8)libm 是一个微小的比由 MPFR.

2.079441541...7 / 0.69314... = 2.999999...
2.079441541...8 / 0.69314... = 3.000000...

给TA打赏
共{{data.count}}人
人已打赏
未分类

AWS EKS没有发现舵机舱,但舵机安装正常。

2022-9-9 0:55:18

未分类

FileNotFoundException打开失败。在将图像文件保存到android的内部存储时,出现EPERM(操作不允许)。

2022-9-9 0:55:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索