" res=nb1/(int)nb2; donne le meme resultat"
absolument pas, si tu castes nb2 mais que nb1 est un float, ton int sera à nouveau promu en float... donc double cast, dont 1 masqué
et pour les arrondis, si le static_cast<int>(x) donne le floor, il suffit de faire static_cast<int>(x+0.5f) pour avoir le ceil