Не становится ли код несовместимым в том или ином случае, если не используется strictfp?

У нас готовится первый аудит кода, и кто-то сказал мне, что он не использует strictfp арифметика с плавающей точкой может сделать нас помеченными. Программное обеспечение написано на компьютере Windows и развернуто на компьютерах Solaris для производственного использования. Любые предложения о том, что это правда?

Кроме того, если не использовать 'strictfp`, можно сделать арифметический код с плавающей запятой несовместимым или непереносимым, почему в любом случае разрешено выполнение вычислений не строгим образом?

CERT Secure Coding Standards, NUM53-J заставляет меня чувствовать, что его обязательно использовать strictfp:

Программы, которым требуются согласованные результаты от операций с плавающей точкой на разных JVM и платформах, должны использовать модификатор strictfp.

1 ответ

Решение

Если вашему приложению нужны операции с плавающей запятой для согласованности между различными JVM, то да, вам нужно strictfp, Если этого не произойдет, то нет. Некоторые приложения не нуждаются в согласованности и получают выгоду от возможности повышения точности на промежуточных этапах вычислений, в которых не используются strictfp может предложить. Другие должны давать точно такой же выход для тех же самых входов, и поэтому требуют strictfp чтобы гарантировать, что выходной.

Другие вопросы по тегам