问题标签 [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 回答
39818 浏览

c++ - C++中long double的精度是多少?

有谁知道如何找出long double特定平台上的精度?我似乎在 17 位十进制数字后失去了精度,这与我刚使用double. 我希望得到更多,因为double在我的平台上用 8 个字节表示,而用long double12 个字节表示。

在你问之前,这是针对欧拉计划的,所以是的,我确实需要超过 17 位数字。:)

编辑:感谢您的快速回复。我刚刚确认在我的系统上使用只能获得 18 位十进制数字long double

0 投票
5 回答
7064 浏览

floating-point - 80 位扩展精度数据类型的应用/好处是什么?

是的,我的意思是说80-bit。那不是笔误...

我在浮点变量方面的经验总是涉及 4 字节的倍数,比如单数(32 位)、双数(64 位)和长双数(我曾见过它被称为 96 位或 128 位)。这就是为什么当我在编写一些代码以读取和写入AIFF(音频交换文件格式)文件时遇到80 位扩展精度数据类型时有点困惑:选择了扩展精度变量来存储采样音轨的速率。

当我浏览 Wikipedia 时,我发现上面的链接以及IEEE 754-1985 标准摘要中的 80 位格式的简要说明(但不在IEEE 754-2008 标准摘要中)。似乎在某些架构上“扩展”和“长双”是同义词。

我没有遇到的一件事是使用扩展精度数据类型的特定应用程序(当然,AIFF 文件采样率除外)。这让我想知道:

  • 有没有人遇到过扩展精度对于某些编程应用程序是必要/有益的情况?
  • 80 位浮点数的好处是什么,除了明显的“它比 double 精度高一点,但比 long double 的大多数实现少字节”?
  • 它的适用性正在减弱吗?
0 投票
2 回答
3231 浏览

c++ - long double 输出的精度不正确。可能有什么问题?

我有一个long double常量,我将其设置为 const 或非 const。它比long double我的测试工作站上的精度(19 位)长(40 位)。

当我打印出来时,它不再以 19 位精度显示,而是以 16 位显示。

这是我正在测试的代码:

编译:

输出:

我会期待0.6931471805599453094,而是得到0.6931471805599452862.

19位精度被削减到16位是有原因的吗?

这是我的环境:

我在其他版本的 gcc 上看到了同样的问题,例如:

我可以查看 NTL 或其他库,但我很好奇是什么原因造成的。感谢您的洞察力。

0 投票
5 回答
46105 浏览

c - C中的长双

我一直在阅读C Primer Plus书并找到了这个例子

在我的 macbook 上运行此程序后,我对输出感到非常震惊:

所以我环顾四周,发现显示 long double 的正确格式是使用%Lf. 但是我仍然不明白为什么我得到了 doubleabet值而不是我在CygwinUbuntuiDeneb上运行它时得到的值,这大致是

有任何想法吗?

0 投票
1 回答
606 浏览

c++ - 实际长双精度与 std::numeric_limits 不一致

使用 i686-apple-darwin10-g++-4.2.1 在 Mac OS X 10.6.2、Intel 上工作,并使用 -arch x86_64 标志进行编译,我只是注意到虽然......

...正如预期的那样,当 long double 实际上设置为指数大于 308 的值时,它变为 inf——即实际上它只有 64 位精度而不是 80 位。

此外,sizeof()显示长双精度为 16 个字节,它们应该是。

最后, using<limits.h>给出与 相同的结果<limits>

有谁知道差异可能在哪里?

4932
1e+308 inf
16

0 投票
1 回答
305 浏览

file - 二进制文件打印和所需精度

我正在打印一个变量 z1,它是一个包含浮点数的一维数组到一个文本文件,以便我可以导入 Matlab 或 GNPlot 进行绘图。我听说二进制文件 (.dat) 比 .txt 文件小。我目前用于打印到 .txt 文件的定义是:

我有三个问题:

  1. 二进制文件真的比文本文件更紧凑吗?

  2. 如果是,我想知道如何修改上面的代码,以便我可以将数组 z1 的值打印到二进制文件中。我读过 fprintf 必须用 fwrite 替换。我的输出文件说 dodo.dat 应该包含数组 z1 的值,每行一个浮点数。

  3. 我的代码中有 %.16Le,但我认为 %.15Le 是正确的,因为我有 15 个长双精度数字。我在宽度位置放了一个点 (.),因为我相信这允许扩展到任意字段以保存所需的数字。我对吗?作为 %.16Le 的示例,我可以得到像 1.0047914240730432e-002 这样的输出,它给了我 16 个精度数字,并且字段的宽度具有正确的宽度以正确显示数字。在宽度位置而不是宽度值中放置一个点 (.) 是一种好习惯吗?

非常感谢...

更新正在更改为:

除了更改为“wb+”还可以吗?我无法在 Matlab 中读取二进制文件。

0 投票
4 回答
4492 浏览

c++ - x86-64 long 双精度

Intel 64 位平台上 long double 的实际精度是多少?是 80 位填充到 128 还是实际 128 位?

如果是前者,除了 gmp 之外,还有其他选择可以达到真正的 128 精度吗?

0 投票
4 回答
4969 浏览

visual-c++ - 在 MSVC 中将扩展精度浮点数(80 位)转换为双精度(64 位)

在 MSVC win32/win64 中从扩展精度浮点数(80 位值,在某些编译器中也称为long double)到双精度(64 位)转换的最便携和“正确”的方法是什么?

MSVC 目前(截至 2010 年)假定这long doubledouble同义词。

我可能可以在内联 asm 中编写fld/fstp汇编程序对,但内联 asm 不适用于 MSVC 中的 win64 代码。我是否需要将此汇编代码移动到单独的 .asm 文件中?难道真的没有好的解决办法吗?

0 投票
3 回答
72752 浏览

c++ - 长双 vs 双

我知道各种数据类型的大小可以根据我所在的系统而改变。

我使用 XP 32 位,并使用sizeof()C++ 中的运算符,看起来long double是 12 字节,double是 8。

但是,大多数主要来源都指出它long double是 8 个字节,因此范围与 a 相同double

我怎么有 12 个字节?如果long double确实是12个字节,这不是也扩展了值的范围吗?或者长签名仅在值超出双精度范围时才使用(编译器数字),因此超出 8 个字节?

0 投票
8 回答
276337 浏览

c - printf 和 long double

我在 Windows 上使用最新的 gcc 和 Netbeans。为什么不起作用long double?说明printf%lf错了吗?

代码:

输出: