我们即将进行第一次代码审核,有人告诉我,不使用strictfp进行浮点运算可能会被标记出来。软件在Windows计算机上编码,并部署到Solaris计算机上以用于生产。关于它是真的有什么建议吗?

另外,如果不使用“strictfp”可以使浮点算术代码不兼容或不可移植,为什么仍然允许使用 non-strictfp 方式进行计算?

CERT Secure Coding Standards, NUM53-J让我觉得必须使用strictfp:

需要跨不同JVM和平台进行浮点运算的一致结果的程序,必须使用strictfp修饰符。

最佳答案

如果您的应用程序需要浮点操作以在不同的JVM之间保持一致,那么是的,您需要strictfp。如果不是,那么您就不会。某些应用程序不需要一致性,并且可以从不使用strictfp可以提供的中间计​​算步骤中受益于更高的精度。其他人则需要为相同的输入提供完全相同的输出,因此需要strictfp来保证可移植的输出。

10-04 23:12