۱) float یا کلاً دادههای اعشاری توی C++ طوری هستند که همیشه علامتدار تعریف میشن. پس استفاده از unsigned براشون بیمعنی هست.
۲) unsigned یه تعریف typedef داره که برای راحتی کار به جای unsigned int قرار داده شده. همین. فقط برای راحتی کار.
۳) در مورد long هم چون در حقیقت long float نداریم و این چیزی که بخواد float با حافظهی دوبرابری باشه همون double هست، بنابراین پرسش منتفی میشه.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)