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 toRadians(double angdeg) {
    // Do not delegate to Math.toRadians(angdeg) because
    // this method has the strictfp modifier.
    return angdeg / 180.0 * PI;
}

public static strictfp double toDegrees(double angrad) {
    // Do not delegate to Math.toDegrees(angrad) because
    // this method has the strictfp modifier.
    return angrad * 180.0 / PI;
}

Посилання

  • FP-strict Expressions (англ.)
  • Flanagan, David (March 2005). Java in a Nutshell (Fifth ed.). O'Reilly Media. ISBN 978-0-596-00773-7. Retrieved 2010-03-03. (англ.)
  • Schildt, Herbert (2007). Java: A Beginner's Guide (4 ed.). McGraw-Hill Companies. ISBN 978-0-07-226384-8. (англ.)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.