在对浮点数执行平方和平方根时:表达式必须具有整数或无作用域枚举类型

Posted

技术标签:

【中文标题】在对浮点数执行平方和平方根时:表达式必须具有整数或无作用域枚举类型【英文标题】:While performing squaring and square roots on floats: expression must have integral or unscoped enum type 【发布时间】:2015-02-06 00:18:27 【问题描述】:

我正在尝试对浮点数进行平方和平方根,但出现错误:表达式必须具有整数或无范围枚举类型 这意味着什么?我该如何解决?

这是我正在使用的代码:

#include <math.h>

int main()

    float X = 5.f;
    float Thing = X ^ 2;
    float Thing2 = sqrtf(X ^ 2);

    return 0;

【问题讨论】:

【参考方案1】:

^ 不是幂运算符,它是 XOR 运算符。

C++ 没有幂运算符,但是因为平方相当于乘以自己,所以几乎总是以这种方式实现。

#include <math.h>

int main()

    float X = 5.f;
    float Thing = X * X;
    float Thing2 = sqrtf(X * X); //Or Thing instead of X * X

    return 0;

&lt;math.h&gt; 中确实存在一个pow 运算符,但这不是做平方的标准方法,因为它必须有额外的逻辑才能允许功率在运行时变化。

【讨论】:

以上是关于在对浮点数执行平方和平方根时:表达式必须具有整数或无作用域枚举类型的主要内容,如果未能解决你的问题,请参考以下文章

为 ARM Thumb2 寻找有效的整数平方根算法

如何指定给定数字是不是具有整数平方根? [复制]

python--math库

PHP数学函数的练习

ES6浅谈 -- 数值扩展,函数扩展

python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方立方)np.power函数默认返回整数格式np.float_power函数默认返回浮点数