我的土地面积计算器应用程序的逻辑

问题描述 投票:0回答:1

我正在为叔叔制作这个英亩和克拉的计算器,以帮助他的工作。

我将在此示例中解释这件事的整个想法。因此,如果添加3.22 + 2.2,则应为5.42,但在此计算器中,3.22 + 2.2应为= 6,因为3英亩+ 2英亩= 5英亩,而22克拉+ 2克拉= 1英亩,因此总数为6英亩。

我在代码中执行此操作的方式是,将3.22分为两个,3和22,另一个分为2和2,然后将整数和分数相加,如果分数> = 24我将整数加1,如果整个计算中还有分数,我将其保留。例如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;
}

我在卡住的地方添加了代码的一部分。

注意:我正在尝试使事物能够添加多个数字,而不仅仅是两个。我也在尝试添加减法,但是我不知道如何开始进行减法,因为我什至还没有完成加法。

javascript html css dom
1个回答
2
投票

如果您正在谈论的错误是这样的:

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行定义了该变量,之后没有对其进行更新) 。

第二,使用后应清除dp变量。截至目前,这两个变量在您每次运行getTotal函数

时都会不断增加。

关于如何添加两个数字的问题,建议您创建一个变量,以便在其中存储用户键入的第一个数字。

例如,当用户键入4.19并按加号按钮时,将4.19保存到变量中(假设firstNum)。然后,当用户按下相等按钮时,将来自当前输入字段的数字firstNum变量相加。


关于您要如何精确地添加两个不同的数字,请破坏要添加到英亩部分和卡拉茨部分中的两个数字。然后分别添加它们,然后使用getTotal

因此,如果数字是3.21和5.18,则将3和5相加,再将21和18相加,然后将两者都相加。您将获得8.39。最后,将8.39转换为9.15。

抱歉,如果我的计算不正确。这是我第一次有了这个概念!但我相信这是要走的路。

© www.soinside.com 2019 - 2024. All rights reserved.