Не становится ли код несовместимым в том или ином случае, если не используется strictfp?
У нас готовится первый аудит кода, и кто-то сказал мне, что он не использует strictfp
арифметика с плавающей точкой может сделать нас помеченными. Программное обеспечение написано на компьютере Windows и развернуто на компьютерах Solaris для производственного использования. Любые предложения о том, что это правда?
Кроме того, если не использовать 'strictfp`, можно сделать арифметический код с плавающей запятой несовместимым или непереносимым, почему в любом случае разрешено выполнение вычислений не строгим образом?
CERT Secure Coding Standards, NUM53-J заставляет меня чувствовать, что его обязательно использовать strictfp
:
Программы, которым требуются согласованные результаты от операций с плавающей точкой на разных JVM и платформах, должны использовать модификатор strictfp.
1 ответ
Если вашему приложению нужны операции с плавающей запятой для согласованности между различными JVM, то да, вам нужно strictfp
, Если этого не произойдет, то нет. Некоторые приложения не нуждаются в согласованности и получают выгоду от возможности повышения точности на промежуточных этапах вычислений, в которых не используются strictfp
может предложить. Другие должны давать точно такой же выход для тех же самых входов, и поэтому требуют strictfp
чтобы гарантировать, что выходной.