Javascript - 奇怪的数学输出

标签 javascript math

这是我的 JavaScript:

function straava() {
    var input = document.getElementById('input').value
    var r1 = document.getElementById('r1').value
    var r2 = document.getElementById('r2').value
    document.getElementById("output").innerHTML = r2 / (r1 + r2) * input;
}

给定值:

input = 5
r1 = 1000
r2 = 1000

预期输出为 2.5,但此函数生成 0.0004999500049995。这是为什么?

最佳答案

你的变量是字符串。所以发生的事情是这样的:

"1000" / ("1000" + "1000") * "5";
"1000" / "10001000" * "5";
// 0.0004999500049995

+(加法)运算符连接字符串而不是相加,因此结果不正确。

将您的“数字”转换为数字;使用 parseInt/parseFloat 函数、(一元)+ 运算符或 Number 函数:

var input = parseInt(document.getElementById('input').value, 10);
var r1 = parseInt(document.getElementById('r1').value, 10);
var r2 = parseInt(document.getElementById('r2').value, 10);

关于Javascript - 奇怪的数学输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29889562/

相关文章:

javascript - 如何在不丢失格式的情况下连续 fadeIn() 元素文本的每个字符,包括嵌套元素?

javascript - for 循环在自动完成内不起作用

JavaScript - 如何在显示为正方形/矩阵的元素线性数组中按键查找元素的 x,y 位置?

algorithm - 图中的独立集

javascript - 如何从 Javascript 中的字符串获取时区偏移量

javascript - 可以使用模板字符串作为对象值吗?

javascript - 使用 jquery 切换时如何更改事件切换 anchor 的样式?

python - 无法理解如何在 PyGame 中制作角色脸鼠标

math - O(n^(1/logn)) 实际上是常数吗?

java - 用Java表示分数的最佳方法?