问题标签 [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.
c++ - 想要计算 18 位但只能计算到 6?使用 long double 但仍然无法正常工作
我编写了一个程序来使用 Gregory Leibniz 公式估算 pi,但是,它不会计算到小数点后 18 位。它最多只能计算 5 个小数点。有什么建议么?
c++ - acos(-1) 的 NetBeans 错误输出
我有一个任务是通过几种不同的迭代方法计算 pi 并将其与计算的值进行比较pi = acos(static_cast<long double>(-1.0))
(存储为长双精度)。出于某种原因,NetBeans 给了我-8.8796093704934495e+043
. 根据我有限的知识,似乎某处存在签名/未签名的分歧。我已将编译器设置为使用 C++11 标准。我错过了什么?
c++ - C++ Builder 2009 Float 与 Long Double
我正在查看一些遗留代码,它试图将 along double
转换为float
. 从阅读http://www.cplusplus.com/forum/beginner/34088/看来,long double
asizeof()
为 16,而浮点数sizeof()
为 8。
当在转换后引用浮点变量时,您会得到一个floating point overflow exception
预期的...
在调试模式下运行时,IDE 每次都会向您显示异常,除非您忽略所有该类型。我不希望这样做,因为我希望妥善解决问题。
因此,这将问题归结为:
有没有办法进行这样的演员表,而不会溢出(或替代演员表可以让我得到相同的信息)?
当前的铸造看起来像:floatVar = (float) longDoubleVar;
objective-c - 仅当双精度为 int 时才返回相同的双精度?(无小数)Obj-C
我正在使用 afor-loop
来确定是否long double
是 int。我设置了 for 循环循环另一个long double
介于 2 和final
^1/2 之间的循环。Final
是我设置的一个循环,基本上是 2 的 2-10 次方减去 1。然后我检查是否final
是整数。我的问题是我怎样才能只得到final
整数值?我的解释可能有点混乱,所以这是我的整个循环代码。顺便说一句,我正在使用长双打,因为我计划在很大程度上增加这些数字。
visual-c++ - Visual C++ x86 ABI:VC++ 如何返回值?
我知道在 中返回 1/2/4 字节整数,在 中返回eax
8 字节整数eax:edx
。
顺便说一句,在 cdecl/stdcall 中如何返回 4/8/16字节浮点值(也许我记得long double
可能是 16 字节..) ?
感谢@MatteoItalia,我知道 VC++long double
是 8 字节的;那么,如何使用 16 字节的浮点数呢?
(不要说我“只使用 8 个字节!”。我真的需要它。)
嗯,我想我应该对 10 字节浮点数感到满意......
c - 与数据结构对齐混淆?
代码 1:-
在我的电脑上输出:-
由于 和 的大小分别char
是double
“1”和“8”,因此0028FF00
和分别是“1”和“8”0028FF08
的倍数。
代码 2:-
输出是: -
char
因为和的大小分别long double
是 '1' 和 '12' 但0028FF04
不是 '12' 的倍数。
为什么在这种情况下不应用填充?
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 使用不同的精度。是否有在两个平台上使用相同精度的替代方案?
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 数值评估精度(15
vs. 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 行左右的类)。
c - 如何在 Cython 中强制使用长双打?
对于我对 C 的了解不足,我提前道歉:我使用 Python 编写代码,并使用标准 C 函数使用 Cython 编写了一些模块,以大大提高速度。但是,我需要一个高于1e308
(是的,你没看错)的范围,这是我目前通过使用类型double complex
和函数cexp
和cabs
.
我尝试使用函数cexpl
和cabsl
,并将我的变量声明为类型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 字节边界上对齐。
所以这似乎没有什么区别。
我还运行了以下程序来检查系统上的范围:
并得到以下输出:
所以我想问题出在我的代码上,对吗?除了声明变量以确保我的程序实际使用长双精度数之外,我还需要添加任何显式标识符吗?
python - 如何使用 numpy longdouble dtype?
我正在尝试np.longdouble
在我的 Python 代码中使用 dtype,并尝试使用 NumPy 来操作我从使用 Cython 编译的 C 模块中获得的长双精度数。
假设我这样做:
从本质上讲,它与这个问题中的相同问题有关,我知道 Python 首先将 转换1e+346
为浮点数,其表示为inf
. 但是,有人可以提出解决方法吗?有没有办法创建不首先转换为浮点数的 NumPy longdoubles?
我有一个可以输出长双精度的 C 模块,我想在 dtype 的 numpy 数组中使用它np.longdouble
。
即使解决方案涉及重新编译 Python/NumPy,我也愿意尝试。