Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单函数参数_Javascript_Math - Fatal编程技术网

Javascript 简单函数参数

Javascript 简单函数参数,javascript,math,Javascript,Math,我目前正在努力使下面的calcRatio函数正确计算。这可能是基础数学! 以下功能按预期工作: function calcRatio(){ var r = frontRing.value/backCog.value; return r; } e、 g.前环=52,后齿=11 r=4.7272 下面给出了错误的结果: function calcRatio(){ var r = frontRing.value/(backCog.value + 5); return

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

function calcRatio(){
    var r = frontRing.value/backCog.value;
    return r;
}
e、 g.前环=52,后齿=11 r=4.7272

下面给出了错误的结果:

function calcRatio(){
    var r = frontRing.value/(backCog.value + 5);
    return r;
}
e、 g.前环=52,后齿=11 r=0.4521

我最终希望用一个参数替换5

如果不在函数中进行设置,我也无法将frontRing和backCog变量设置为.value。这可能是问题的根源吗


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

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);
}

当你玩数字游戏的时候。。。仅当您希望将字符串值转换为数字时。@FelixKling更正。elem.value的返回值是string anywaysRight,但您让它听起来好像在处理数字时应该始终使用parse*。如果您能解释一下不将值转换为数字时会出现什么问题,那将更加有用。谢谢您的帮助。如果它读取var paramValue=parseFloatparam.value;与var paramValue=parseFloatparamValue;相反?这取决于这里的参数。如果是输入元素,则传递输入元素并使用param.value。如果只是一个变量名,则参数应为OK。您应记录backCog.value+5的结果。。。