static_cast <int> (std::floor(x));
olduğu şekildedir. Size en yakın tam sayıyı -infinity'ye doğru yuvarlar. En azından girişiniz, ints tarafından temsil edilen aralıkta olduğu sürece. '.5 ve neyi ekleyerek neyi kastettiğinizden emin değilim, ancak aynı etkiye sahip olmayacağından emin değilim.
Ve std :: kat bir çift döndürüyor çünkü bu en genel olanı. Bazen bir yüzdeyi veya iki katını yuvarlamak isteyebilirsiniz, ancak türü koruyabilirsiniz. Yani yuvarlak ziyade Yani std :: zemin bir int döndü eğer yapmak zor olurdu 1.
daha, 1.0f için 1.3f vardır. (ya da en azından, orada yavaşlayan şeyleri gereksiz yere attıracaksınız).
kat yalnızca türünü değiştirmeden, kendisini yuvarlama, size gerektiğinde/eğer int yayınlayabileceğim gerçekleştirir.
diğer nedeni çiftlerde aralığı ints çok daha büyük olmasıdır. Tüm çiftlerin inçlere yuvarlanması mümkün olmayabilir.
doğru aralıkta parça varsa, dökme o spec bu (ima şey) diyor nerede gayet? ? –
Burada iki işlem var: std :: floor ve cast. Std :: floor bir tamsayı döndürecek ve cast bir tamsayı değeriyle belirtildi. Std :: floor döndüğü sürece Gerçekten tam bir tamsayı olan bir değer, ben Başarısızlığın nasıl mantıklı olacağını göremiyorum. –
Kat, tam bir tam sayı olmayan bir şeyi nasıl iade ederdi? Küçük çiftler için (epsilon << 1), zemin (x) dahil olmak üzere tüm ayrılmaz değerler gösterilebilir. Büyük çiftler için (epsilon >> 1), sadece integral değerler gösterilebilir, bu yüzden kat (x) == x. – MSalters