数学比javascript更难
所以我在第节中遇到了一个问题,您发现很少有“//var”-s。基本上,我需要它来显示如果我吃特定数量的汉堡,我会得到多少公斤和克。e、 汉堡包含260卡路里=0260公斤。0260*4份=1公斤40克。但这并不能说明这一点。显示真正四舍五入的数字。我真的需要帮助,我已经坐了3个多小时试图找出问题所在数学比javascript更难,javascript,math,numbers,Javascript,Math,Numbers,所以我在第节中遇到了一个问题,您发现很少有“//var”-s。基本上,我需要它来显示如果我吃特定数量的汉堡,我会得到多少公斤和克。e、 汉堡包含260卡路里=0260公斤。0260*4份=1公斤40克。但这并不能说明这一点。显示真正四舍五入的数字。我真的需要帮助,我已经坐了3个多小时试图找出问题所在 <!doctype html> <html> <head> <style type="text/css"> body{font
<!doctype html>
<html>
<head>
<style type="text/css">
body{font-size:150%;}
</style>
<title>FAT CALCULATOR 4000</title>
<meta charset="utf-8" />
<script>
var calories=new Array(0, 260, 310, 460, 560, 400, 370);
var cals=calories[0];
function calsMuutus(){
cals=calories[document.getElementById("hamburger").selectedIndex];
arvuta();
}
function arvuta(){
var kogus1=document.getElementById("kogus").value;
if(isNaN(kogus1)){
document.getElementById("kaal").value="...";
return;
}
//var kaal=calsg*kogus;
var calsg=(cals/1000);
//var kogusg=kogus1/1000;
var kaal=(calsg*kogus1);
var kaalk=parseInt(kaal);
var kaalg=parseInt(kaal)%1000;
var kaal=kaalk+" kg. "+kaalg+" gr.";
document.getElementById("kaal").value=kaal;
}
function arvuta2(){
var kaal1=document.getElementById("kaal").value;
if(isNaN(kaal1)){
document.getElementById("kogus").value="...";
return;
}
var kogus=(kaal1/calsg);
document.getElementById("kogus").value=kogus;
}
</script>
</head>
<body background="calc_bg.jpg" >
<center>
<div>
<table>
<tr>
<td>
<h1>FAT CALCULATOR 4000</h1>
Choose hamburger<br />
<select id="hamburger" onchange="calsMuutus()" >
<option> </option>
<option>Hamburger</option>
<option>Cheeseburger</option>
<option>Double Cheeseburger</option>
<option>Big Mac</option>
<option>Filet-O-Fish</option>
<option>McChicken</option>
</select><br />
<p></p>
Amount: <br />
<input type="text" id="kogus" onkeyup="arvuta()" /><br />
<p></p>
You gain:<br />
<input type="text" id="kaal" onkeyup="arvuta2()" /><br />
</tr>
</td>
</table>
</div>
</center>
</body>
</html>
正文{字体大小:150%;}
脂肪计算器4000
var卡路里=新数组(0、260、310、460、560、400、370);
var cals=卡路里[0];
函数calsmutus(){
cals=卡路里[document.getElementById(“汉堡”).selectedIndex];
arvuta();
}
函数arvuta(){
var kogus1=document.getElementById(“kogus”).value;
if(isNaN(kogus1)){
document.getElementById(“kaal”).value=“…”;
返回;
}
//var kaal=calsg*kogus;
var calsg=(cals/1000);
//var kogusg=kogus1/1000;
var kaal=(calsg*kogus1);
var-kaalk=parseInt(kaal);
var kaalg=parseInt(kaal)%1000;
var kaal=kaalk+“kg.”+kaalg+“gr.”;
document.getElementById(“kaal”).value=kaal;
}
函数arvuta2(){
var kaal1=document.getElementById(“kaal”).value;
if(isNaN(kaal1)){
document.getElementById(“kogus”).value=“…”;
返回;
}
var kogus=(kaal1/calsg);
document.getElementById(“kogus”).value=kogus;
}
脂肪计算器4000
选择汉堡包
汉堡包
芝士汉堡
双层芝士汉堡
巨无霸
鱼片
麦基肯
金额:
您获得:
更换
parseInt // This would round the numbers to a integer value
与
parseFloat // which would give you precision.
还可以考虑使用javascript绑定事件,而不是内联属性
JS
function arvuta() {
var kogus1 = document.getElementById("kogus").value;
if (isNaN(kogus1)) {
document.getElementById("kaal").value = "...";
return;
}
// Keep it as it is as you seem to be
// dividing by 1000 anyways
var calsg = cals;
// Get Kilo calories
var kaal = (calsg * kogus1);
// Get the kg for calories
var kaalk = Math.floor(parseInt(kaal, 10) / 1000);
var kaalg = parseFloat(kaal) % 1000;
var kaal = kaalk + " kg. " + kaalg + " gr.";
document.getElementById("kaal").value = kaal;
}
首先,您不必对每一行进行var 第二,问题在于:
var kaalk=parseInt(kaal);
var kaalg=parseInt(kaal)%1000;
parseInt使其被截断。问题是您使用的是
parseInt
,它返回一个整数
parseFloat
可以做到这一点,但不要使用它,因为parseInt
和parseFloat
都很慢,因为它们将字符串解析为数字,而您希望将数字转换为字符串
然后,您应该使用toFixed
:
myNumber.toFixed(numDecimals)
或者,您也可以使用
myNumber.toPrecision(numDigits)
例子
(123.456).toFixed(7); // "123.4560000" (7 decimals)
(123.456).toPrecision(7); // "123.4560" (7 digits)
(123.456).toFixed(0); // "123" (converted to integer)
(123.456).toPrecision(0); // RangeError: precision 0 out of range
这就是为什么描述性变量命名是强制性的。你考虑过把卡路里值作为选项的值吗?这样你就可以直接得到它,而不是依赖于两个单独的数组的对齐。“真正舍入的数字”是什么意思?arvuta:“计算”,kogus:“数量”,muutus:“更改”@IgnacioVazquez Abrams也许这些名字在OP的第一语言中是有意义的。parseInt不舍入,它截断(
parseInt(1.0)==1
)。Thanx,这确实对qite有点帮助。现在它显示你得到了0.26公斤。从一个汉堡中提取0.26克,重量为260克,在这种情况下为0260千克