Javascript 简单函数参数
我目前正在努力使下面的calcRatio函数正确计算。这可能是基础数学! 以下功能按预期工作: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
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的结果。。。