当程序中的一些数字变小时,我遇到了问题,因为我将它们写在文件上并且指数格式变得不同: 例如,数字> 1e-100: 0.3979111076224349D-98 较小的数字: 0.2306878464709676-101(D消失)
由于它是由另一个程序读取的,因此这些数字无法正确读取。
当前我使用的格式为3D25.16 一个可能的解决方案是强制3E25.15E3 问题是我输了1位数字
我要避免丢失数字,并且我要避免在打印之前丧失测试性能。
还有其他解决方案吗?对我来说,理想的解决方案是在指数上用2位数字打印指数格式,而当<1e-100时改为3位数字 另一个好的解决方案是将很小的数字转换为零的格式选项
另一个疑问是:从3D25.16更改为3E25.15E3时,将D更改为E会失去精度吗?因为不接受3D25.15E3
谢谢
答案 0 :(得分:0)
正如每个人在评论中(以及您在问题中)所说,您可以只使用E
描述符而不是D
,因此可以指定指数部分的位数
当前我使用的格式为3D25.16,可能的解决方案是强制使用3E25.15E3。问题是我丢失了任意数字一位。
那么,为什么不只使用3E26.15E3
增加输出的宽度呢?
另一个疑问是:从3D25.16更改为3E25.15E3时,将D更改为E会失去精度吗?
使用3E25.15E3
:是的,您可以这样做(1位数字)。使用3E26.15E3
:不,您不会。