Java'da katıfp Java sürüm 1.2'de tanıtıldığı gibi Java'nın temel sürümünde tanıtılmayan katı kayan nokta anlamına gelen bir değiştiricidir. Java'da kayan nokta hesaplamalarını kısıtlamak ve kayan nokta değişkeninde işlemler gerçekleştirirken her platformda aynı sonucu elde etmek için kullanılır.
Kayan nokta hesaplamaları platforma bağlıdır, yani bir sınıf dosyası farklı platformlarda (16/32/64 bit işlemciler) çalıştırıldığında farklı çıktılar (kayan nokta değerleri) elde edilir. Bu tür sorunları çözmek için JDK 1.2 sürümünde strictfp anahtar sözcüğü aşağıdaki şekilde tanıtıldı: IEEE754 kayan nokta hesaplamaları için standartlar.
Not: strictfp değiştiricisi yalnızca sınıf arayüzleri ve yöntemleriyle kullanılır ancak aşağıda gösterildiği gibi değişkenlere uygulanmak için geçerli değildir:
Çizim 1: Sınıflarla anahtar kelime kullanımı
strictfp class Test {
// All concrete methods here are implicitly strictfp.
}
Çizim 2: Arayüzlerle anahtar kelime kullanımı
strictfp interface Test {
// All methods here becomes implicitly
// strictfp when used during inheritance.
}
class Car {
// strictfp applied on a concrete method
strictfp void calculateSpeed(){}
}
Çizim 3: Bir Arayüzde Soyut yöntemle anahtar kelime kullanımı
strictfp interface Test {
double sum();
// Compile-time error here
strictfp double mul();
}
Yukarıdaki illüstrasyonlardan bazı sonuçlar şu şekilde çıkarılabilir:
- Bir sınıf veya arayüz strictfp değiştiricisi ile bildirildiğinde, sınıfta/arayüzde bildirilen tüm yöntemler ve sınıfta bildirilen tüm iç içe geçmiş türler örtülü olarak strictfp'dir.
- katıfp yapamamak soyut yöntemlerle kullanılabilir. Ancak soyut sınıflar/arayüzlerle kullanılabilir.
- Bir arayüzün yöntemleri dolaylı olarak soyut olduğundan, strictfp bir arayüz içindeki herhangi bir yöntemle kullanılamaz.
- Java 17 sürümünden itibaren, tüm kayan nokta ifadeleri sıkı bir şekilde değerlendirildiğinden, strictfp anahtar sözcüğü açıkça gerekli DEĞİLDİR.
Örnek:
Java// Java program to illustrate strictfp modifier // Usage in Classes // Main class class GFG { // Method 1 // Calculating sum using strictfp modifier public strictfp double sum() { double num1 = 10e+10; double num2 = 6e+08; // Returning the sum return (num1 + num2); } // Method 2 // Main driver method public static void main(String[] args) { // Creating object of class in main() method GFG t = new GFG(); // Here we have error of putting strictfp and // error is not found public static void main method System.out.println(t.sum()); } }
Çıkış
1.006E11
Çıkış:
Aşağıda konsoldaki çıktıyı görebiliriz.