Sou*_*a B 24 c++ floating-point language-lawyer c++23
与基本类型 \xe2\x80\x93和\xe2\x80\x93 不同float
, C++23 中引入的新类型将始终是 IEEE 标准二进制浮点类型吗?double
long double
floatN_t
<stdfloat>
固定宽度浮点的 cppreference 页面确实提到了精度和指数位,这与 IEEE 标准相匹配。但该页面并未在任何地方明确提及 IEEE 标准。IEEE 兼容的浮点意味着,它们不仅应该具有相同的精度和指数位,而且该标准还列出了必须以符合标准的方式支持的许多操作。那么这些类型是否严格遵循这一点呢?
\nAdr*_*ica 15
是的。C++23 标准最新草案(如下引用)的相关部分明确提到了类型的 ISO/IEC/IEEE 60559 浮点标准float*_t
。根据维基百科,这与 IEEE-754 标准相同:
\n\n国际标准ISO/IEC/IEEE 60559:2011(内容与 IEEE 754-2008 相同)已根据 ISO/IEEE PSDO 协议通过 ISO/IEC JTC 1/SC 25 批准采用并发布。
\n
以下是 C++23 标准草案相关部分的第一部分(其他“精度”类型的定义类似):
\n\n\n6.8.3 可选扩展浮点类型 \xc2\xa0\xc2\xa0\xc2\xa0[basic.extended.fp]
\n
\n 1 \xc2\xa0\xc2\xa0\xc2\xa0 如果实现支持\n扩展浮点类型 ([basic.fundamental]),其属性\n由 ISO/IEC/IEEE 60559 浮点交换格式\n二进制 16 指定,然后 typedef -namestd\xe2\x80\x8b::\xe2\x80\x8bfloat16_\xc2\xad
t\n在标头中定义<stdfloat>
并命名此类类型,定义了宏([cpp.predefined]),并且支持__STDCPP_\xc2\xadFLOAT16_\xc2\xadT__
浮点文字后缀f16
和([lex.fcon])。\n\xe2\x80\xa6 \n (\xe2\x80\xa6 与、等类似)F16
float32_t
float64_t
注意:就引用的段落是否要求此类类型的操作符合 IEEE/ISO 标准而言,我认为确实如此。此类变量的“属性”包括它们的行为,而不仅仅是它们的表示格式。
\n是的,他们是。
[stdfloat.syn]
指出
该标头定义了 [basic.extended.fp] 中指定的可选扩展浮点类型的类型别名。
反过来,引用由ISO/IEC/IEEE 60559 浮点交换格式[basic.extended.fp]
指定的类型
ISO/IEC/IEEE 60559 是 754 的更新版本
归档时间: |
|
查看次数: |
1094 次 |
最近记录: |