P3505R4是否要求在符合IEEE-754规范的实现中,将1e-4f格式化为“1e-4”,而将1e-4格式化为“0.0001”?
P3505R4 已在最近的布尔诺会议上被纳入草案标准。其拟议的表述如下:
转换说明符在以下条件成立时为
f:当value的绝对值位于区间 [l, u) 内,其中 l 是由T表示且不小于10-4的最小值,u 是由T表示且不超过std::numeric_limits<T>::radix``std::numeric_limits<T>::digits + 1,并向下舍入到可由T表示的最近的10的幂的值;若不在该区间内,则为e。
现在,最接近10-4的单精度值是 0.0000999999974737875163555145263671875,它略低于10-4;而最接近10-4的双精度值略高于10-4,为 0.000100000000000000004792173602385929598312941379845142364501953125。
这是否意味着,在C++29中,前者将使用 e 表示符进行格式化,而后者将使用 f 表示符进行格式化?
我查看了上一版 P3505R3,它改为谈及“最近的可表示值为 T 的值”。因此,P3505R3与 P3505R4之间的拟议行为发生了变化,但我在P3505R4中找不到任何相关讨论,也在 cplusplus/papers仓库 上找不到相关讨论。
解决方案
这一变化是对措辞进行微调、以使下界和上界看起来更一致的无意副作用。我们正在研究将其撤回,以恢复原来经过批准的设计。
P.S.我是P3505的作者之一,在做最后一刻修改时错过了这个问题,完全是我的错。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。