数学比javascript更难

数学比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

所以我在第节中遇到了一个问题,您发现很少有“//var”-s。基本上,我需要它来显示如果我吃特定数量的汉堡,我会得到多少公斤和克。e、 汉堡包含260卡路里=0260公斤。0260*4份=1公斤40克。但这并不能说明这一点。显示真正四舍五入的数字。我真的需要帮助,我已经坐了3个多小时试图找出问题所在

<!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千克