Bu bölümde gerçek sayıların dönüşüm belirtimlerine yer verilmiştir. Bunlar %f, %e, %E, %g ve %G dönüşümleridir.
%f dönüşümü argümanını ondalık gösterimle aşağıdaki biçimde çıktılar:
Buradaki ondalık noktayı izleyen basamakların sayısını hassasiyet parametresi ile belirtebilirsiniz.
%e dönüşümü argümanını üstel gösterimle aşağıdaki biçimde çıktılar:
Burada da ondalık noktayı izleyen basamakların sayısını hassasiyet parametresi ile belirtebilirsiniz. Üs daima son iki hanede bulunur. %E dönüşümü de aynı biçimi üretir tek farkla e yerine E harfi kullanılır.
Üs -4’ten küçükse ya da hassasiyete eşit veya daha büyükse %g ve %G dönüşümleri argümanı %e veya %E (sırasıyla) ile eşdeğerdir. Aksi takdirde, %f ile eşdeğerdir. 0 hassasiyet 1 olarak değerlendirilir. Sonucun ondalık kısmının sağındaki sıfırlar kaldırılır ve nokta sadece sağında bir sayı varsa gösterilir.
%a ve %A dönüşümleri gerçek sayıyı metin biçiminde çıktılar. Bu çıktı farklı yazılım ve/veya makineler arasında metin verisi olarak aktarılabilir. Sayılar aşağıdaki biçimde gösterilir:
Ondalık noktanın solunda sadece bir rakam bulunur. Sayı normalleştirilmemişse bu rakam
0'dır. Aksi takdirde gerçeklemede kaç bit ayrıldığına bağlı olarak herhangi bir rakam olabilir. Ondalık noktanın sağındaki basamakların sayısı hassasiyet için belirtilen değerle sınırlıdır. Hassasiyet olarak sıfır verilmişse sayının en doğru gösterilebileceği yeterlikteki (veya
FLT_RADIX değeri 2'nin kuvvetlerindeki bir değer değilse yanyana iki değerin iki ayrı değer olarak seçilebileceği yeterlikte) basamak sayısı kullanılır.
%a dönüşümü için onaltılık sayı,
0x ve
p ile gösterilen önek ve üstel değer için küçük harfler kullanılır.
%A dönüşümünde bunlar için büyük harfler kullanılır. Üstel kısım iki tabanına göre onluk bir sayı olarak en az bir rakamla ifade edilir, ancak değer gerektiriyorsa daha fazla rakam da kullanılabilir.
Basılan değer sonsuzluk ya da sayı olmayan bir değerse ve dönüşüm belirteçleri %a, %e, %f veya %g ise çıktı [-]inf ya da nan’dır; dönüşüm belirteçleri %A, %E veya %G ise çıktı [-]INF veya NAN’dır.
Davranışı değiştirmek için kullanılan imler şunlardır:
- -
Alan içinde sonucu sola yanaştırır (normalde sağa yanaştırılır).
- +
Sonuç daima bir artı ya da eksi işareti içerir.
- (boşluk karakteri)
Sonuç bir artı ya da eksi işareti içermiyorsa işaret yerine bir boşluk basar. + im karakteri belirtilmişse sonuç mutlaka bir işaret içerir. Hem + hem de boşluk karakteri belirtilmişse boşluk yoksayılır.
- #
Sonuç ondalık noktanın sağında hiçbir sayı olmasa bile ondalık nokta gösterilir. %g ve %G dönüşümleri için noktanın sağı, konmaması belirtilmemişse, sıfırlarla doldurulur.
- '
- 0
Alanda boş kalan yerleri boşluk yerine sıfırlarla doldurur. Sıfırlar işaretten sonra konur. Bu imle birlikte - imi belirtilmişse bu im yoksayılır.
Bir hassasiyet belirtilmişse, %f, %e ve %E dönüşümleri için ondalık noktadan sonraki basamakların sayısıdır. Bu dönüşümler için öntanımlı hassasiyet 6'dır. Hassasiyet olarak 0 değeri belirtilmişse ondalık nokta basılmaz.
%g ve %G dönüşümleri için hassasiyet kıymetli hanelerin sayısıdır. Kıymetli haneler noktanın solundaki tek hane ile noktanın sağındakilerin tamamıdır. Hassasiyet 0 ise ya da belirtilmemişse 1 belirtilmiş varsayılır. Basılacak değer belirtilen hane sayısı ile doğru olarak gösterilemeyecekse gösterilebilecek en yakın sayıya yuvarlanır.
Tür değiştirici belirtilmeksizin tüm gerçek sayı dönüşüm belirteçleri argümanı double türünde yorumlar. (Öntanımlı argüman terfileri çerçevesinde float türünden argümanlar özdevinimli olarak double türüne dönüştürülür.) Desteklenen tür değiştirici:
- L
Argümanın long double türünde yorumlanacağını belirtir.
Aşağıdaki örneklerde gerçek sayı dönüşümleri kullanılarak sayıların nasıl basılacağı gösterilmiştir:
"|%13.4a|%13.4f|%13.4e|%13.4g|\n"
Bu şablon dizgesi için çıktı:
| 0x0.0000p+0| 0.0000| 0.0000e+00| 0|
| 0x1.0000p-1| 0.5000| 5.0000e-01| 0.5|
| 0x1.0000p+0| 1.0000| 1.0000e+00| 1|
| -0x1.0000p+0| -1.0000| -1.0000e+00| -1|
| 0x1.9000p+6| 100.0000| 1.0000e+02| 100|
| 0x1.f400p+9| 1000.0000| 1.0000e+03| 1000|
| 0x1.3880p+13| 10000.0000| 1.0000e+04| 1e+04|
| 0x1.81c8p+13| 12345.0000| 1.2345e+04| 1.234e+04|
| 0x1.86a0p+16| 100000.0000| 1.0000e+05| 1e+05|
| 0x1.e240p+16| 123456.0000| 1.2346e+05| 1.235e+05|
%g dönüşümünde sağdaki sıfırların kaldırıldığına dikkat edin.