问题标签 [long-double]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
758 浏览

c++ - 在 windows 上打印 long double

我使用 Microsoft Visual Studio 2010 和 Intel C++ Compiler XE 14.0。项目配置为“x64”。我需要使用long double数据类型。我添加了一个编译选项/Qlong_double并编写了一个测试示例:

输出:

长双尺寸:16,值:0,000000

资源的双倍值:1,414214

我发现问题在于 Windows 的标准 C 库不支持 long double。尝试使用 MPFR:

输出:

mpfr 长双:0

是否没有在 Microsoft Windows 上正确打印长双精度值的方法(包括低级方法)?也许我可以检索和打印单独的有效数字和指数?

升级版:

我写了一个例子来看看计算是否用 long double 执行:

输出:

计数长双:52

双数:52

这意味着工作是使用 double 而不是 long double 完成的(尽管/Qlong_double设置了标志)。有哪些想法?

0 投票
1 回答
1201 浏览

c++ - 在 c++ 中从 double 更改为 long double 不再给出正确的结果

为了提高准确性,我一直在尝试将程序从 double 升级到 long double。但是,我收到以下错误。

haread.cpp:178:43: 错误: '2.0e+0 * std::operator+ [with _Tp = long double](( (((const std::complex )KEp) + ( (long unsigned int)(((long unsigned int)i) * 32ul)))), ( (const std::complex )(& energia)

这条线是

phicheb[1][i] = (2.0*(KEp[i] + energia)/dE)-phistate[is][i] ;

数组是使用“新”动态定义的。所有变量都是 long double。当某个数字与复数数组相乘时,所有情况都会出现问题。因此,我将 2.0 更改为 2.0L 以及所有类似的情况。所以,现在编译成功了。但是,我的程序不再正常工作。我是否需要为我定义的所有长双打后缀 L?我将它们定义如下:

长双 xmin = 1.6 ; 长双 xmax = 7.0 ;

我什至不确定从哪里开始。有什么建议么?编译器是 gcc 版本 4.6.2 (SUSE Linux)。编辑:

这是代码的核心。它用于在网格上传播波函数。我将尝试尽可能少地解释代码。我有 phistate[0][i] 的值,它是对应于基态的波函数(其余状态均为零)。然后我计算系统的能量(使用傅里叶变换的动能和势能已经给出)。现在,使用一种特殊的方法(切比雪夫方法),我及时传播波函数。该方法基于递归关系。在此递归中,使用多项式展开计算传播。Chebc 是 long double 系数,其值定义明确。所有未显示定义的变量都是long double。

当我只使用双而不是长双时,我得到结果没有问题。当使用 long double 时,我的结果 phistate_new 具有 NaN 给出的所有值。

0 投票
0 回答
22 浏览

c++ - 在Eclipse Kepler,C++,(mac OS X)中输出到控制台时,如何更改双精度的显示值?

这是我的代码:

...这是我的输出:

等等。

有什么方法可以更改 IDE 设置,以便控制台显示双精度的所有元素?

或者也许这样输出显示到某个小数位,即 5 个小数位。

任何帮助将不胜感激,谢谢。

编辑:在这里回答:如何“计算”双精度值的正确小数位数?

0 投票
3 回答
333 浏览

c++ - 这个表达有什么问题?“如果(因子数组 [x]%2 == 0 && 因子数组 [x]%3 ==0...”

这是代码:

该代码是对 projecteuler.net 上的项目 3 的响应。我正在尝试使用 c++ 和常识的基本知识来找到 600851475143 的最大素数。

函数中发生错误void displayfactorresults

编译器输出错误信息:

“二进制表达式'long-double'和'long-double'的无效操作数”

0 投票
2 回答
215 浏览

python - Longdouble(1e3000) 变成 inf:我该怎么办?

(网络上的大多数其他相关问题都涉及 C 的 longdouble 和 python 之间的转换。这个问题是不同的。)

我不明白为什么我不能像这样在 python 中正确获得 longdouble:

看来我需要让我的 python 控制台知道 1e3000 是 longdouble 而不是 double。我怎样才能做到这一点

0 投票
2 回答
3645 浏览

c++ - 将 long double 转换为 CString

我正在使用 unicode 设置构建 C++ MFC 项目,我通常使用函数 _ttof转换CString为 double 但我找不到long double使用TCHAR.

提前致谢。

0 投票
3 回答
3095 浏览

c++ - 使用长双

以下是我的 C++ 程序。我想在变量上存储一个长数字,例如 pi,所以我尝试使用 long double。但是当我运行程序时它只显示 3.14159 。如何将完整的浮点数存储到变量中?

0 投票
1 回答
412 浏览

c - C - long double 和 printf 问题

我是新的 C 程序员,我正在做一个学校项目,我必须近似值或 pi。我的教授说我们必须使用 . 声明所有整数项long double。控制台显示我询问用户给定函数的近似 pi 的项数。我输入 1 作为术语数,但代码返回 -0.00000000 而不是 4.00000000。

我在让它工作方面没有任何成功(虽然它适用于浮动)。我究竟做错了什么?(顺便说一句,我正在使用带有编译器的代码块。)

0 投票
1 回答
125 浏览

c++ - 赋值后 long double 重置为 0

我一直在修改 C/C++ 中的一些疾病模型,并希望从中获得更高的精度。我考虑过使用 long doubles 来获得 80 位精度(我使用的是 cygwin 的 GCC 4.8.3),但是在用它进行计算之后,我得到了一个“nan”(不是数字)输出值。这是我正在使用的代码。所有变量都是长双精度数。

输出的预期值:http: //pastebin.com/mJqkSVUf

0 投票
1 回答
122 浏览

c - 为什么这两个片段会产生不同的价值?

当我运行以下代码时:

输出是:

这两个数字不应该相同吗?更有趣的是,下面的代码:

产生:

那么为什么它们当时不同而现在相同呢?