从度数转换为弧度再返回会留下非常小的剩余部分

Converting from degrees to radians and back leaves a very small leftover

所以我有以下 javascript 代码:

function dosine(){
    var num = document.getElementById('num').value;
    console.log(num);
    num = (num*Math.PI)/180;
    num = Math.sin(num);
    numinverse = Math.asin(num);
    num = num * (180/Math.PI);
    numinverse = numinverse * (180/Math.PI);
    document.getElementById('resultsine').innerHTML = "Sine: " + num.toString();
    document.getElementById('resultinverse').innerHTML = "Inverse Sine: " + numinverse.toString();
}

当我 运行 这段代码并输入任意数字(在本例中我使用 64 进行测试)时,numinverse returns 64.00000000000001,我只是想知道这是为什么。我显然可以通过使用 toFixed 来解决这个问题,但我想知道为什么首先会发生这种情况。

这可能与为什么 0.1 + 0.2 ≠ 0.3

该值是一个浮点数,表现不是很准确。在您的情况下,您还可以创建一些哈希表,将整数度值映射到弧度,但它不会覆盖整个频谱。