相关疑难解决方法(0)

为什么微软放弃了长双数据类型?

不久前我写了一个程序,它使用了一些阶乘函数.我使用long double数据类型来支持"相对"大数字.

现在,我从代码块改为Visualstudio 2010,我想知道为什么我的程序不再工作,直到我在一些研究中意识到MS已经放弃了长双数据类型.这有什么特别的原因吗?对我而言,它看起来非常像技术方面的倒退.

有没有其他选择?(我也很乐意使用boost库中的替代品).

c++ floating-point long-double visual-studio

21
推荐指数
1
解决办法
7695
查看次数

从 long double 到 unsigned long long 的转换在 MSVC C++ 编译器中似乎被破坏

考虑以下代码:

\n
#include <iostream>\n\nusing namespace std;\n\nint main(int argc, char *argv[])\n{\n    long double test = 0xFFFFFFFFFFFFFFFF;\n    cout << "1: " << test << endl;\n    unsigned long long test2 = test;\n    cout << "2: " << test2 << endl;\n    cout << "3: " << (unsigned long long)test << endl;\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

使用 GCC g++ (7.5.0) 编译此代码并运行会产生预期的以下输出:

\n
1: 1.84467e+19\n2: 18446744073709551615\n3: 18446744073709551615\n
Run Code Online (Sandbox Code Playgroud)\n

但是,使用 Microsoft Visual C++ 编译器(16.8.31019.35,64 位和 32 位)对其进行编译并运行会产生以下输出:

\n
1: 1.84467e+19\n2: 9223372036854775808\n3: 9223372036854775808\n
Run Code Online (Sandbox Code Playgroud)\n

将值转换为 an 时unsigned long …

c++ casting visual-c++

4
推荐指数
1
解决办法
163
查看次数

长双 vs 长长

我知道这似乎是一个太简单的问题,但我很难理解double&的含义/含义long。所有在线资源均给出官方定义。我正在寻找外行的解释。

简而言之,我的问题是: a long long、 along double和 a之间有什么区别long float

我尝试运行快速测试(附有屏幕截图)以查看每种类型的字节大小,但无法理解它。a 的大小如何long double与 a 相同double

在此输入图像描述

c floating-point precision double

0
推荐指数
1
解决办法
5327
查看次数