问题标签 [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 投票
2 回答
294 浏览

c++ - 想要计算 18 位但只能计算到 6?使用 long double 但仍然无法正常工作

我编写了一个程序来使用 Gregory Leibniz 公式估算 pi,但是,它不会计算到小数点后 18 位。它最多只能计算 5 个小数点。有什么建议么?

0 投票
0 回答
85 浏览

c++ - acos(-1) 的 NetBeans 错误输出

我有一个任务是通过几种不同的迭代方法计算 pi 并将其与计算的值进行比较pi = acos(static_cast<long double>(-1.0))(存储为长双精度)。出于某种原因,NetBeans 给了我-8.8796093704934495e+043. 根据我有限的知识,似乎某处存在签名/未签名的分歧。我已将编译器设置为使用 C++11 标准。我错过了什么?

0 投票
2 回答
558 浏览

c++ - C++ Builder 2009 Float 与 Long Double

我正在查看一些遗留代码,它试图将 along double转换为float. 从阅读http://www.cplusplus.com/forum/beginner/34088/看来,long doubleasizeof()为 16,而浮点数sizeof()为 8。

当在转换后引用浮点变量时,您会得到一个floating point overflow exception预期的...

在调试模式下运行时,IDE 每次都会向您显示异常,除非您忽略所有该类型。我不希望这样做,因为我希望妥善解决问题。

因此,这将问题归结为:

有没有办法进行这样的演员表,而不会溢出(或替代演员表可以让我得到相同的信息)?

当前的铸造看起来像:floatVar = (float) longDoubleVar;

0 投票
1 回答
148 浏览

objective-c - 仅当双精度为 int 时才返回相同的双精度?(无小数)Obj-C

我正在使用 afor-loop来确定是否long double是 int。我设置了 for 循环循环另一个long double介于 2 和final^1/2 之间的循环。Final是我设置的一个循环,基本上是 2 的 2-10 次方减去 1。然后我检查是否final是整数。我的问题是我怎样才能只得到final整数值?我的解释可能有点混乱,所以这是我的整个循环代码。顺便说一句,我正在使用长双打,因为我计划在很大程度上增加这些数字。

0 投票
2 回答
184 浏览

visual-c++ - Visual C++ x86 ABI:VC++ 如何返回值?

我知道在 中返回 1/2/4 字节整数,在 中返回eax8 字节整数eax:edx

顺便说一句,在 cdecl/stdcall 中如何返回 4/8/16字节浮点值(也许我记得long double可能是 16 字节..) ?


感谢@MatteoItalia,我知道 VC++long double是 8 字节的;那么,如何使用 16 字节的浮点数呢?

(不要说我“只使用 8 个字节!”。我真的需要它。)

嗯,我想我应该对 10 字节浮点数感到满意......

0 投票
3 回答
160 浏览

c - 与数据结构对齐混淆?

代码 1:-

在我的电脑上输出:-

由于 和 的大小分别chardouble“1”和“8”,因此0028FF00和分别是“1”和“8”0028FF08的倍数。

代码 2:-

输出是: -

char因为和的大小分别long double是 '1' 和 '12' 但0028FF04不是 '12' 的倍数。

为什么在这种情况下不应用填充?

0 投票
0 回答
284 浏览

c++ - long double - 在 Windows 和 Unix 上具有相同精度的替代方案?

我正在编写一个工具,它允许您将特定日期格式(Unix 时间、HFS、Fat-Time,...)的给定数字(Dec、Bin、Hex)转换为人类可读的日期字符串。我对 Windows OLE-Date 有疑问,它以双精度值表示日期和时间。现在我在 Windows 和 Unix 中得到不同的输出。这只是 Outputdate 的第二个区别,但我想在 Windows 和 Unix 平台上生成相同的输出。我正在使用 long double 来存储值。我知道 Visual Studio C++ 编译器和 gcc 对 long double 使用不同的精度。是否有在两个平台上使用相同精度的替代方案?

0 投票
1 回答
358 浏览

python - 混合 NumPy longdouble 和 SymPy 数值计算——那么精度呢?

我有一个代码,其中一部分计算使用 NumPy 函数和 longdoubles 完成,另一部分使用 SymPy 符号微分和数值评估,然后连接在一起(到 SymPy 浮点数)。Sympy 评估可以以任意精度完成,但是什么精度才足够好,即不会“污染”longdoubles 结果?据我了解,NumPy longdouble 实际上只有 80 位长,尽管float128在我的系统上被调用。维基百科说大约 80 位精度:

80 位格式的十进制和二进制之间的转换界限可以如下给出:如果具有最多 18 个有效数字的十进制字符串正确舍入为 80 位 IEEE 754 二进制浮点值(如输入),则转换回到相同数量的有效十进制数字(对于输出),那么最终的字符串将与原始字符串完全匹配;而相反,如果 80 位 IEEE 754 二进制浮点值被正确转换并(最近)舍入为具有至少 21 个有效十进制数字的十进制字符串,然后转换回二进制格式,它将与原始格式完全匹配。

此外,我在交互式提示中进行了挖掘:

因此,wiki 说精度取决于数字的转换方式(18或者21数字),而 Numpy 只是说它是18数字。有趣的是,默认 double 的精度等于默认的 SymPy 数值评估精度(15vs. 15)。

假设我将 longdouble 结果转换为 SymPy 浮点数(然后在 SymPy 上工作),我应该设置什么 SymPy 精度?18数字?21? 再多一点?

我在 Linux 64 位(Sandy Bridge)、NumPy 1.6.2、SymPy 0.7.1.rc1 上使用 Python 2.7。实际代码在这里nsk第 130 行左右的类)。

0 投票
1 回答
1269 浏览

c - 如何在 Cython 中强制使用长双打?

对于我对 C 的了解不足,我提前道歉:我使用 Python 编写代码,并使用标准 C 函数使用 Cython 编写了一些模块,以大大提高速度。但是,我需要一个高于1e308 (是的,你没看错)的范围,这是我目前通过使用类型double complex和函数cexpcabs.

我尝试使用函数cexplcabsl,并将我的变量声明为类型long double complex,但之后仍然遇到溢出1e308。这可能意味着我的编译器将长双打转换为双打,对吗?但根据维基百科,

使用 GNU C 编译器,long double 是 x86 处理器上的 80 位扩展精度,无论该类型使用的物理存储是什么(可以是 96 位或 128 位)..[4]

我正在使用带有 Arch Linux 的 64 位系统(如果重要的话,还有 Python 2.7.8)。

如何编写强制使用长双打的 Cython 模块?我需要这么大的数字来进行一些科学计算。

编辑: 使用标志 -m128bit-long-double 编译会得到相同的结果。如此处所示,

在 x86-64 编译器中,-m128bit-long-double 是默认选择,因为它的 ABI 指定 long double 将在 16 字节边界上对齐。

所以这似乎没有什么区别。

我还运行了以下程序来检查系统上的范围:

并得到以下输出:

所以我想问题出在我的代码上,对吗?除了声明变量以确保我的程序实际使用长双精度数之外,我还需要添加任何显式标识符吗?

0 投票
1 回答
12100 浏览

python - 如何使用 numpy longdouble dtype?

我正在尝试np.longdouble在我的 Python 代码中使用 dtype,并尝试使用 NumPy 来操作我从使用 Cython 编译的 C 模块中获得的长双精度数。

假设我这样做:

从本质上讲,它与这个问题中的相同问题有关,我知道 Python 首先将 转换1e+346为浮点数,其表示为inf. 但是,有人可以提出解决方法吗?有没有办法创建不首先转换为浮点数的 NumPy longdoubles?

我有一个可以输出长双精度的 C 模块,我想在 dtype 的 numpy 数组中使用它np.longdouble

即使解决方案涉及重新编译 Python/NumPy,我也愿意尝试。