Не работает округление double переменных - C#

Узнай цену своей работы

Формулировка задачи:

работаю с 2я векторами, вычисляю угол между ними в радианах и перевожу в градусы. Надо брать arccos, пока беру разные векторы - все работает, если беру одинаковые например v1 = (1, 1, 1) и v2 = (1, 1, 1), то по вычислению получается мелкое число но больше 1 или -1, потому Arccos возвращает NaN. Написал условие округления - но оно почему то не работает. Заранее благодарен откликнувшимся гуру кода
 vScalar = (v1.X * v2.X + v1.Y * v2.Y + v1.Z * v2.Z);
            
            if (vScalar > 1.0)
            {
                Math.Truncate(vScalar);
            }
            else if (vScalar < -1.0)
            {
                Math.Truncate(vScalar);
            }
            
            v1Length = Math.Sqrt(v1.X * v1.X + v1.Y * v1.Y + v1.Z * v1.Z);
            v2Length = Math.Sqrt(v2.X * v2.X + v2.Y * v2.Y + v2.Z * v2.Z);
            double j = vScalar / (v1Length * v2Length);
 
            cAngle = Math.Acos(j);
            Angle = (cAngle*(180/Math.PI));

Решение задачи: «Не работает округление double переменных»

textual
Листинг программы
vScalar = Math.Truncate(vScalar);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5