【发布时间】:2015-12-21 08:53:59
【问题描述】:
我们即将进行第一次代码审核,有人告诉我,不使用 strictfp 进行浮点运算可能会导致我们被标记。软件在 Windows 机器上编码并部署到 Solaris 机器以供生产使用。关于它是真的有什么建议吗?
另外,如果不使用 'strictfp' 会使浮点算术代码不兼容或不可移植,为什么仍然允许以 non-strictfp 方式进行计算?
CERT Secure Coding Standards, NUM53-J 让我觉得必须使用strictfp:
需要跨不同 JVM 和平台的浮点运算获得一致结果的程序必须使用 strictfp 修饰符。
【问题讨论】:
-
不要只是链接,还要引用相关位。我猜到了你可能的意思。
-
如果您将其部署到 Intel 硬件上的 Windows 或 Solaris,那么无论您是否有 strictfp 都没有区别。 (但如果您有任何机会部署到 strictfp 确实会产生影响的硬件,那么在您的代码中使用 strictfp 是个好主意)查看我的一个较早问题的答案:stackoverflow.com/questions/22562510/…
-
当你说“不合规”时——不合规是什么?
-
@KlitosKyriacou - 为了便于携带。
-
@Erwin - 谢谢,这很有帮助。开发机器是 Intel 的机器,试图找到生产服务器的详细信息。
标签: java portability strictfp