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 [ 3 вересня 2011 у Wayback Machine.] (англ.)
- Flanagan, David (March 2005). Java in a Nutshell (Fifth ed.). O'Reilly Media. . Retrieved 2010-03-03. (англ.)
- Schildt, Herbert (2007). Java: A Beginner's Guide (4 ed.). McGraw-Hill Companies. . (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
strictfp klyuchove slovo u movi programuvannya Java yake obmezhuye obchislennya chisel z ruhomoyu komoyu dlya zabezpechennya mobilnosti Vono bulo vvedeno u Java pochinayuchi z versiyi 1 2 Java Virtual Machine JVM OsnoviStandart IEEE 754 viznachaye standartnij metod dlya obchislen chisel z ruhomoyu komoyu ta zberigannya znachennya z ruhomoyu komoyu iz prostoyu 32 bit u Java tipi float abo podvijnoyu 64 bit u Java tipi double tochnistyu Sprava v tomu sho JVM vikoristovuye vsyu mozhlivu tochnist procesora a vona na riznih sistemah rizna tomu i rezultat mozhe vijti riznij Napriklad koli vi porivnyuyete dva double 0 555 i 0 556 iz tochnistyu dvoh znakiv pislya komi to voni rivni a ot pri tochnosti troh znakiv ni Naspravdi suchasni kompilyatori sami stavlyat strictfp tomu sho vipadki koli vin ne potriben mozhna pererahuvati na palcyah Jdetsya pro programi yaki vimagayut znachnu tochnist obchislen napriklad pov yazani z naukoyu VikoristannyaVikoristannya strictfp garantuye sho rezultati obchislen iz ruhomoyu komoyu budut odnakovi na vsih platformah Ce mozhe buti nadzvichajno korisno pri porivnyanni chisel z ruhomoyu komoyu strictfp mozhe buti vikoristanij u klasah interfejsah i neabstraktnih metodah Pri vikoristanni strictfp u metodi vsi rozrahunki provodyatsya vseredini metodu Pri vikoristanni strictfp u klasi vsi rozrahunki provodyatsya vseredini klasu Priklad vikoristannya strictfp u klasi public strictfp class MyFPclass vmist klasu Priklad vikoristannya strictfp u metodah ci strictfp metodi znahodyatsya u klasi StrictMath yakij u svoyu chergu mistitsya u Java paketi 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 PosilannyaFP strict Expressions 3 veresnya 2011 u Wayback Machine angl Flanagan David March 2005 Java in a Nutshell Fifth ed O Reilly Media ISBN 978 0 596 00773 7 Retrieved 2010 03 03 angl Schildt Herbert 2007 Java A Beginner s Guide 4 ed McGraw Hill Companies ISBN 978 0 07 226384 8 angl