Selamlar,
XC16 da karşılaştım, codeblocks ta da denedim, sonuç aynı, şöyle ki;
diyelim ki char str[50];
diye bir değişkenimiz var,
sprintf(str,"%02.04f", 5.37);
yazdığımızda str nin 05.3700 şeklinde olması lazım ama 5.3700 oluyor, yani tam sayı kısmını 2 hane olarak yazmıyor, halbu ki %nin yanında ki 0 ondalık taraf verilen haneden küçük ise 0 ile doldur demek, bug mı var nedir anlamadım,
Buna rağmensprintf(str,"%02.f", 5.37);
yazarsam str ye 05 atıyor, var mı fikri olan?
%'nin yanındaki toplam uzunluğu belirliyor, sadece nooktanın solunu değil. %02 yerine %07 yazsanız olması lazım.
Hocam süpersin ya, teşekkürler.
Gerçi uzun yoldan çözmüştüm ama bir sürü tantanadan kurtardın beni,
"%02.4f
Minimum uzunluğu 2 karakter olan, virgülden sonra 4 basamak hassasiyetli float değişken yazdırır.
"5.3700" virgülden sonra 4 basamak, toplam uzunluk 6. Format parametrelerini sağlamakta, doğru sonuçtur.
Printf'te float'un tam sayı kısmının uzunluğunu belirten bir parametre yok bildiğim kadarıyla.
"%02.f"
Minimum uzunluğu 2 olan, 0 ile pad'lenmiş, virgülden sonra hassasiyeti olmayan float değişken yazdırır. Burada da "05" doğru sonuç.
http://www.cplusplus.com/reference/cstdio/printf/ (http://www.cplusplus.com/reference/cstdio/printf/)
https://wpollock.com/CPlus/PrintfRef.htm#printfFlags (https://wpollock.com/CPlus/PrintfRef.htm#printfFlags)