В Java 1e-12*Math.rint(1e12*x)
округляет двойное и возвращает в результате двойное.
В C ++ вы можете написать 1e-12*floor(1e12*x + 0.5)
.
Обратите внимание, что они ведут себя по-разному, если 10 12 x точно между двумя целыми числами. Версия Java будет округляться до четного числа, тогда как версия C ++ всегда будет округляться вверх.