相关疑难解决方法(0)

为什么(inf + 0j)* 1计算为inf + nanj?

>>> (float('inf')+0j)*1
(inf+nanj)
Run Code Online (Sandbox Code Playgroud)

为什么?这在我的代码中造成了一个讨厌的错误。

为什么1乘法身份不给(inf + 0j)

python nan ieee-754

93
推荐指数
3
解决办法
3381
查看次数

签署NaN值

基于"IEEE"规范:"当输入或结果是NaN时,该标准不解释NaN的符号." 然而,printf版画NaN值签署:nan-nan (?从SPEC)有人点我的一套规则时nan,当-nan印刷例如,我检查了printf(-1.0f)打印-nan 谢谢

c printf nan

5
推荐指数
1
解决办法
938
查看次数

为什么零乘以无穷大 = 负 nan?

我有这个代码:

#include <iostream>

int main()
{
    double A = 1e3000000;
    double B = 0;
    double C = A * B;

    std::cout << "A = " << A << "\n";
    std::cout << "B = " << B << "\n";
    std::cout << "C = " << C << "\n";
}
Run Code Online (Sandbox Code Playgroud)

输出:

A = inf
B = 0
C = -nan
Run Code Online (Sandbox Code Playgroud)

为什么C为负值?我用 clang 17 和在线 C++ 编译器对此进行了测试。

c++ floating-point

5
推荐指数
0
解决办法
115
查看次数

为什么 0.0/0.0 在 C++ 中使 nan 为负数?

我从SoloLearn 中发现了以下内容

我发现 0.0/0.0 使负 nan(-nan)。对我来说,这样的数学结果未定义或“不是数字”是有道理的。[...]

此外,为什么-nan+2^nan=nan?

例如:

#include <iostream>
using namespace std;

int main() {
    cout<<0.0/0.0<<endl;
    cout<<"important "+to_string(1.0/0.0)+"o:"<<endl;
    cout<<"ba"+to_string(0.0/0.0*-1)+"a"<<endl;
    cout<<(0.0/0.0)+2^(0.0/0.0*-1);//-nan+2^nan=nan
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但这还不足以满足我的逻辑..

c++ nan undefined-behavior

2
推荐指数
1
解决办法
150
查看次数

标签 统计

nan ×3

c++ ×2

c ×1

floating-point ×1

ieee-754 ×1

printf ×1

python ×1

undefined-behavior ×1