Nejlepší odpověď
std :: nearbyint : Zaokrouhlí plovoucí -point argument arg
na celočíselnou hodnotu ve formátu s plovoucí desetinnou čárkou pomocí aktuálního režimu zaokrouhlování .
std :: round : Vypočítá nejbližší celočíselnou hodnotu na arg
(ve formátu s plovoucí desetinnou čárkou) , zaokrouhlování případů na půli cesty od nuly, bez ohledu na aktuální režim zaokrouhlování.
Takže je tu rozdíl. Pokud chcete použít jiný režim zaokrouhlování, než jaký používá std :: round, použijte std :: nearbyint (nebo std :: rint , jsou téměř totožné) .
Všimněte si, že i když zvolíte FE\_TONEAREST, bude tu rozdíl: std :: nearbyint / std :: rint zaokrouhluje případy na polovinu na sudé, zatímco std :: zaokrouhluje od nuly.