Метод Java Math.cos () не возвращает 0, когда ожидается

Использование Java на ПК с Windows 7 (не уверен, имеет ли это значение) и вызов Math.cos () для значений, которые должны возвращать 0 (например, pi / 2), вместо этого возвращает небольшие значения, но небольшие значения, которые, если я не понимаю, являются намного больше, чем 1 ulp от нуля.

Math.cos(Math.PI/2) = 6.123233995736766E-17
Math.ulp(Math.cos(Math.PI/2)) = 1.232595164407831E-32

Это на самом деле в пределах 1 ulp, и я просто запутался? И будет ли это приемлемым методом обертки для устранения этой незначительной неточности?

public static double cos(double a){
    double temp = Math.abs(a % Math.PI);
    if(temp == Math.PI/2)
        return 0;
    return Math.cos(a);
}

Ответы на вопрос(3)

Ваш ответ на вопрос