gpt4 book ai didi

javascript - Easy- 函数参数

转载 作者:行者123 更新时间:2023-12-03 03:53:34 29 4
gpt4 key购买 nike

我目前正在努力让下面的 calcRatio 函数正确计算。这可能是基础数学!以下函数按预期工作:

function calcRatio(){
var r = frontRing.value/backCog.value;
return r;
}

例如前环 = 52,后齿 = 11 r=4.7272....

下面给出了错误的结果:

function calcRatio(){
var r = frontRing.value/(backCog.value + 5);
return r;
}

例如前环 = 52,后齿 = 11 r=0.4521。

我最终希望将 5 与参数交换。

如果不在函数内执行此操作,我也无法将 frontRing 和 backCog 变量设置为 .value。这可能是导致问题的原因吗?

Codepen link

最佳答案

当您期望提取的值是字符串并进行额外计算时,最好使用

parseInt( value , 10) - for integers 
parseFloat( value ) - for decimals

在用例中var r = frontRing.value/(backCog.value + 5);

backCog.value 是一个字符串,因为它是输入元素的值。当您使用 + 添加数字时,它会执行串联而不是加法。

var backCogValue = backCog.value; // "11";

"11"+ 5 --> 115 而不是您预期的 16

所以编写这段代码的正确方法是在要添加数字之前使用上述方法之一。

var frontRingValue = parseFloat(frontRing.value);
var backCogValue = parseFloat(backCog.value);

var r = (frontRingValue/ (backCogValue + 5)).toFixed(4);

toFixed 用于格式化为您期望的小数位数。

如果 5 是传递给函数的参数,那么您的代码将如下所示

function calcRatio(param) {
var frontRingValue = parseFloat(frontRing.value);
var backCogValue = parseFloat(backCog.value);
var paramValue = parseFloat(paramValue);

var r = (frontRingValue/ (backCogValue + paramValue)).toFixed(4);
}

关于javascript - Easy- 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45065069/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com