因此,我正在为叔叔制作这个英亩和克拉的计算器,以帮助他的工作,在这个示例中,我将解释这件事的整个想法,因此,如果您加上3.22 + 2.2,则它应为= 5.42,但在这个计算器3.22 + 2.2应该= 6,导致3英亩+ 2英亩= 5英亩,而22克拉+ 2克拉= 1英亩,所以总数将是6英亩,我在代码中的做法是m将数字3.22拆分为两个,3和22,另一个拆分为2和2,然后将整数和分数相加,如果分数> = 24,则将整数相加,如果存在整个计算中剩下的分数,例如3.15 + 2.15 = 6.6,但是我在如何加数字上受困,那里还有一个错误,我不知道如何求解。
无论如何,这是code
`
function getValue(v) {
return +v.toString().match(/\.(\d*)/)[1] || 0;
}
function getTotal() {
d += Math.floor(num);
p += getValue(num);
if (p >= 24) {
p -= 24;
++d;
}
total = d + p / 100;
ptag.textContent = total;
}
`我在卡住的地方添加了代码部分,但请参考链接。
注意:我正在尝试使事物能够添加多个数字,而不仅仅是两个。我也在尝试添加减法,但是我不知道如何开始进行减法,因为我还没有完成加法。
任何帮助将不胜感激,并在此先感谢。
如果您正在谈论的错误是这样的:
Uncaught TypeError: Cannot read property '1' of null
这是由于您的getValue函数。我的建议是,不要使用像
这样复杂的东西function getValue(v) {
return +v.toString().match(/\.(\d*)/)[1] || 0;
}
使用
function getValue(v) {
return floor((v % 1) * 100);
}
这与您编写的代码具有相同的作用。例如,从输入3.13返回13。
但是几乎没有其他问题。
首先,您应该现在并且经常更新您的num变量,否则,它将始终保持为空字符串(您仅在第20行定义了该变量,之后没有对其进行更新) 。
第二,使用后应清除d和p变量。截至目前,这两个变量在您每次运行getTotal函数
时都会不断增加。关于如何添加两个数字的问题,建议您创建一个变量,以便在其中存储用户键入的第一个数字。
例如,当用户键入4.19并按加号按钮时,将4.19保存到变量中(假设firstNum)。然后,当用户按下等号按钮时,将来自当前输入字段的数字与firstNum变量相加。
关于您要如何精确地添加两个不同的数字,请将要添加到Acres部分和Karats部分的两个数字分开。然后分别添加它们,然后使用getTotal。
因此,如果数字是3.21和5.18,则将3和5相加,再将21和18相加,然后将它们都加。您将获得8.39。最后,将8.39转换为9.15。
抱歉,如果我的计算不正确。这是我第一次有了这个概念!但我相信这是要走的路。