C++ 如何在C++;?

C++ 如何在C++;?,c++,floating-point,decimal,C++,Floating Point,Decimal,据介绍, 有三种二进制浮点基本格式(可使用32、64或128位进行编码)和两种十进制浮点基本格式(可使用64或128位进行编码) 这张图表在下面。在C++中,我相信代码>浮点< /COD>和双是单精度的和双精度的( Bial32 32 和 Bial64 64 >代码>) 我可以用什么类/结构来表示小数点,还有什么东西可以用于二进制128?这些类/结构是标准的还是非标准的?C++没有指定floats必须是32位,或者doubles必须是64位。它甚至不要求一个字节中有8位(尽管必须至少有8位) [

据介绍,

有三种二进制浮点基本格式(可使用32、64或128位进行编码)和两种十进制浮点基本格式(可使用64或128位进行编码)

这张图表在下面。在C++中,我相信代码>浮点< /COD>和<代码>双<代码>是单精度的和双精度的(<代码> Bial32 32 <代码>和<代码> Bial64 64 >代码>)
我可以用什么类/结构来表示小数点,还有什么东西可以用于二进制128?这些类/结构是标准的还是非标准的?

C++没有指定
float
s必须是32位,或者
double
s必须是64位。它甚至不要求一个字节中有8位(尽管必须至少有8位)

[C++11:3.9.1/8]:
有三种浮点类型:
float
double
long double
类型
double
提供的精度至少与
float
相同,类型
long double
提供的精度至少与
double
相同类型
float
的值集是类型
double
的值集的子集;
double
类型的值集是
long double
类型的值集的子集浮点类型的值表示由实现定义。整型和浮点型统称为算术型。标准模板
std::numeric_limits
(18.3)的专门化应规定实现的每种算术类型的最大值和最小值


请参阅工具链和平台的文档,了解其类型大小。它可能支持
长双精度
,这可能是您想要的。

C++不提供十进制类型;唯一的浮点类型是
float
double
long double


< C++也不指定这些使用IEEE75表示,或者它们具有任何特定的大小。唯一的要求是,
double
提供的精度至少与
float
相同,
long double
提供的精度至少与
double

英特尔有一个可在Mac、Linux、HP/UX或Solaris上与ICC或GCC协同工作的系统;或Windows上的ICC或CL编译器。它不如在内置类型上使用运算符有用。如果你使用C++,可能有人写过帮助类,它覆盖了所有必要的运算符。<32位>代码>浮标< /代码>和64位<代码>双< /代码>,GCC提供<代码>第三版FROAT80 80版/代码>,代码> > FLUAT128 < /代码>,代码> > DEMIAL332 < /代码>,<代码>对于ARM目标,它还提供半精度
\uu fp16

英特尔CPU支持使用旧标量x87 FPU指令(但不支持SSE矢量指令)在硬件中进行80位浮点运算。我不知道有哪个主流CPU支持十进制FP类型的硬件

看起来当前的Microsoft编译器为
double
longdouble
都提供了64位,但较旧的编译器为
longdouble
提供了80位

请参阅此处的文档:


如果您想要内置操作员的便利,但又不想自己编写,我建议您退房。特别是,该软件包包含IEEE 754“十进制32/64/128”实现(参见


该库的优点在于它支持多种不同的IEEE 754后端实现,包括C99参考实现、GCC附带的decNumber实现以及Intel的开源IntelDFP库(有关详细信息,请参阅)。它还支持可配置的尾数。

什么系统?例如,对于PowerPC Mac而言,
long double
相当于图表中的
binary64
,可选使用
binary128
,而在Intel Mac上,
long double
是80位。(尽管后者有128位存储空间)C++没有详细说明<代码>浮点< /> >,>代码> double < /代码>和长双。对于所有的,它们都可以是代码三> DIMIMAL128<代码>。在X86和X64平台上,它们倾向于遵循图表,不是吗?@穆:我不选择进入具体的实现细节。我甚至不知道C。OpPress提供小数作为扩展。问题不是标记GCC。问题是标记C++。然而,OP似乎已经找到了有价值的具体信息。令人惊讶的是,@ LeNNESS RraceSeNeRead这个答案既谈到了硬件和软件,也不关心标准定义(本质上是“我们不支持它”)。我关心如何使用它和硬件支持。这个答案很明显是编译器扩展。4个实际上只有两个回答标题。我如何在C++中使用它。我确实给了你一个赞成标准文本的投票权。显然,C++ 11不支持它。@ RaselBurgoFoe:不,这将是话题,尽管TH。事实上,它无疑对某些人来说是有价值的。它真的很美味。我应该用
gcc
visualc++
,和
配方来标记这个问题吗?然后在彭博社每天使用它。以数学上正确的方式设计任何类型的交易、市场数据或其他与金融相关的应用程序如果没有像这样全面的实现,这几乎是不可能的。
Name        Common name         Base  Digits E min  E max   Digits  E max
binary32    Single precision    2     23+1   −126   +127    7.22    38.23
binary64    Double precision    2     52+1   −1022  +1023   15.95   307.95
binary128   Quadruple precision 2     112+1  -16382 +16383  34.02   4931.77
decimal32                       10    7      −95    +96     7       96
decimal64                       10    16     −383   +384    16      384
decimal128                      10    34     −6143  +6144   34      6144