Najlepsza odpowiedź
std :: nearint : Zaokrągla ruchomy -punktowy argument arg
na wartość całkowitą w formacie zmiennoprzecinkowym, przy użyciu bieżącego trybu zaokrąglania .
std :: round : oblicza najbliższą wartość całkowitą do arg
(w formacie zmiennoprzecinkowym) , zaokrąglając obserwacje w połowie drogi od zera, niezależnie od bieżącego trybu zaokrąglania.
A więc jest różnica. Jeśli chcesz użyć innego trybu zaokrąglania niż ten, którego używa std :: round, użyj std :: nearint (lub std :: rint , są one prawie identyczne) .
Zauważ, że nawet jeśli wybierzesz FE\_TONEAREST, będzie różnica: std :: nearint / std :: rint zaokrągla przypadki w połowie do parzystej, podczas gdy std :: zaokrągla od zera.