@zeni1agent

Возникает ошибка в функций когда надо вывести ноль. Как исправить?

Мой код
function fun(degrees, distance) { 
var x1 = 0;
var y1 = 0;

var angle = degrees*Math.PI/180;

var cos = Math.cos(angle)*distance;
var sin = Math.sin(angle)*distance;

var x2 = x1 + cos;
var y2 = y1 + sin;
var arr = [x2,'-----------', y2];

return arr;
}
alert (fun(360, 5)) ;


Все хорошо работает до тех пор пока у не нужно вывести ноль.
в таком случае функция выводит

90
//3.061616997868383e-16,
180
//6.123233995736766e-16
270
//-9.184850993605148e-16
360
//-1.2246467991473533e-15

как это исправить?
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
Все считает верно, смотрите сами.

код: https://jsfiddle.net/lastuniverse/hfbdzt31/6/

вывод:
90  =>  3.061616997868383e-16  ---  5
180  =>  3.061616997868383e-16  ---  5
240  =>  3.061616997868383e-16  ---  5
360  =>  3.061616997868383e-16  ---  5


Если вас смущает что вместо нуля выводит 3.061616997868383e-16 то учтите что:
1. 3.061616997868383e-16 это 0.0000000000000003061616997868383, то есть величина очень близкая к нулю
2. ошибка возникающая при вычислении (неточность вычислений)

Ну и цитата взятая из текста по ссылке:
Можно ли обойти проблему? Конечно, наиболее надёжный способ — это округлить результат используя метод toFixed(n):

let sum = 0.1 + 0.2;
alert( sum.toFixed(2) ); // 0.30
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы