A floating-point literal is of type float if it is suffixed with an ASCII letter F or f; otherwise its type is double and it can optionally be suffixed with an ASCII letter D or d (§4.2.3).
C'de konudaki ilk mesajımda paylaştığım şekilde typecasting kullanılıyor. Bu f'li olay varsa da bilmiyorum.
Python'da da biraz farklı şekilde typecasting yapılabiliyor ama Python siz nokta koyduğunuz an onu float ya da double (hangisini yaptığını bilmiyorum) yapıyor.
Bu sekilde yazarsan hata almazsin.
64 bit degeri 32 bit'e kayipsiz cast edemezsin, literal tanimi geregi float x = 3.14 yazdiginda sol taraftaki 32 bitlik memory bolumune 64 bitlik literali koymaya calisir ve hata alir. 32 bitlik degeri 64 bitlik memory de tutarsin. yani double x = 3.14f ( sol taraf double = sag taraf float )dediginde float literali sorunsuz double'a cast eder. Burada aslinda compiler akilli davraniyor, kodu yazan altta ne oldugunu bilirse.
Arbitrary precision olan dillerde ( Python gibi) numeric degerler runtime'da memory de ne kadar allocate etmesi gerekiyorsa o kadar eder. Yani 32 - 64 gibi sinirlandirmalarin yok. Bu rahatlik verir fakat islem yavasligi saglar.
Memory limitasyonu ciddiyse 32 bit ile reprezente edebilecegin datayi 64 bit ile tutmazsin. Gerektiginde short kullanirsin. Eger Java'da arbitrary precision istiyorsan BigDecimal ve BigInteger class'larini kullanacaksin. Compiled dillerin tumunde bu tarz memory limitasyonlari bulunur, muhendislik bunun uzerinden yuruyor zaten. Memory sonsuz ve bedava degil.