Strictfp

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

strictfp є ключовим словом у мові програмування Java, яке обмежує обчислення чисел із плаваючою комою для забезпечення мобільності. Він був введений у Java починаючи із Java Virtual Machine (JVM) версії 1.2.

Основи[ред.ред. код]

Стандарт IEEE 754, визначає стандартний метод для обчислень чисел із плаваючою комою та зберігання значення із плаваючою комою із простою (32-біт, у Java типі float) або подвійною (64-біт, у Java типі double) точністю . Справа в тому, що JVM використовує всю можливу точність процесора, а вона на різних системах різна, тому і результат може вийти різний. Наприклад, коли ви порівнюєте два double 0,555 і 0,556 із точністю двох знаків після коми, то вони рівні, а от при точності трьох знаків - ні. Насправді, сучасні компілятори самі ставлять strictfp, тому що випадки, коли він не потрібен, можна перерахувати на пальцях. Йдеться про програми, які вимагають точність обчислень які перевищують IEEE (наприклад, щось пов'язане із наукою).

Використання[ред.ред. код]

Використання strictfp гарантує, що результати обчислень із плаваючою комою будуть однакові на всіх платформах. Це може бути надзвичайно корисно при порівнянні чисел із плаваючою комою.

strictfp може бути використаний у класах, інтерфейсах і неабстрактних методах. При використанні strictfp у методі, всі розрахунки проводяться всередині методу. При використанні strictfp у класі, всі розрахунки всередині класу.

Приклад використання strictfp у класі:

public strictfp class MyFPclass { 
    // ... вміст класу ...
}

Приклад використання strictfp у методах (Ці strictfp методи знаходяться у класі StrictMath, який у свою чергу мітиться у Java-пакеті java.lang):

public static strictfp double abs(double);
public static strictfp int max(int, int);
public static strictfp long max(long, long);
public static strictfp float max(float, float);
public static strictfp double max(double, double);
public static strictfp int min(int, int);

Посилання[ред.ред. код]