算法效率改进,浮点数的printf展示( 三 )


其中 , 有八个数字以15位四舍五入为整数 , 该数字往返:
2 966 , 2 956 , 2 890 , 2 740 , 2 149 , 2 -499 , 2 -569 , 2 -645
因此 , 如果使用蛮力测试算法 , 则异常行为仅在46个浮点数中起作用 。
(事实证明 , 对于这八种情况 , 15位四舍五入和非最近的16位数字是相同的 。 )
单精度同样的异常也适用于单精度 , 往返保护将舍入到6位或更少或9位或更多位 , 保留7和8位数字作为候选 。
讨论区对于任何二进制精度 , 问题区域将位于“中间位置” , 其中数字计数在两个往返边界之间 。
对于负数 , 结果是相同的 , 只是图纸是镜像图像 。
【算法效率改进,浮点数的printf展示】对Java , Python , PHP和Javascript进行了快速测试(C并没有真正的机制) 。 似乎只有Python(3)和Javascript(在Firefox , Chrome , Edge和Internet Explorer上经过测试)才被设计为返回最短的十进制字符串 。 (实际上 , 我知道Python是这样设计的;我没有研究Javascript的设计和代码 。 )