Strictfp

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

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

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

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

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

Використання 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);

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