C++ 如何在C++;?
据介绍, 有三种二进制浮点基本格式(可使用32、64或128位进行编码)和两种十进制浮点基本格式(可使用64或128位进行编码) 这张图表在下面。在C++中,我相信代码>浮点< /COD>和<代码>双<代码>是单精度的和双精度的(<代码> Bial32 32 <代码>和<代码> Bial64 64 >代码>)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位) [
我可以用什么类/结构来表示小数点,还有什么东西可以用于二进制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后端实现,包括C99参考实现、GCC附带的decNumber实现以及Intel的开源IntelDFP库(有关详细信息,请参阅)。它还支持可配置的尾数。什么系统?例如,对于PowerPC Mac而言,
long double
相当于图表中的binary64
,可选使用binary128
,而在Intel Mac上,long double
是80位。(尽管后者有128位存储空间)C++没有详细说明<代码>浮点< /> >,>代码> double < /代码>和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