【问题标题】:Javascript calculator. Showing ' . ' and operation sign on screenJavascript 计算器。显示 ' . ' 和屏幕上的操作标志
【发布时间】:2023-03-10 08:40:01
【问题描述】:

我的计算器快用完了,但由于某种原因,我无法得到“.”。和操作标志显示在屏幕上。我的数字正在工作,计算器正在记录操作标志和点,但不显示它。按下后会显示该点并添加一个数字。正如我所说,它们都出现在控制台中。

<div class="calc-grid">
    <div id="result">
        <div id="prev"></div>
        <div id="current"></div>
    </div>
    <button class='span' onClick="calculate(this)">AC</button>
    <button onClick="calculate(this)">DEL</button>
    <button onClick="calculate(this)">÷</button>
    <button onClick="calculate(this)">1</button>
    <button onClick="calculate(this)">2</button>
    <button onClick="calculate(this)">3</button>
    <button onClick="calculate(this)">*</button>
    <button onClick="calculate(this)">4</button>
    <button onClick="calculate(this)">5</button>
    <button onClick="calculate(this)">6</button>
    <button onClick="calculate(this)">+</button>
    <button onClick="calculate(this)">7</button>
    <button onClick="calculate(this)">8</button>
    <button onClick="calculate(this)">9</button>
    <button onClick="calculate(this)">-</button>
    <button onClick="calculate(this)">.</button>
    <button onClick="calculate(this)">0</button>
    <button class='span' onClick="calculate(this)">=</button>
</div>   
current = 
prev = 
lastop = ''
tempcurrent = ''

function calculate(button) {
    let key = (button.textContent)
        if(key == 'AC'){
            current = 
            prev =
            lastop = ''
            tempcurrent = ''
        }
        if (key == 'DEL'){
            current = current.toString().slice(0, -1)
        }
        if ( key >= 0 || key == '.'){
            tempcurrent = tempcurrent + key
            current = parseFloat(tempcurrent)
        }
        if ( key == '+' || key == '-' || key == '÷' || key == '*' ) {
            lastop = key
            prev = current   
            current = ''
            tempcurrent = ''
        } 
        if ( key == '=' && lastop == '+'){
            current =  parseFloat(prev) + parseFloat(current) 
            prev = ''
        }
        if ( key == '=' && lastop == '-'){
            current = parseFloat(prev) - parseFloat(current) 
            prev = ''
        }
        if ( key == '=' &&  lastop == '*'){
            current = parseFloat(prev) * parseFloat(current) 
            prev = ''
        }
        if ( key == '=' && lastop == '÷'){
            current = parseFloat(prev) / parseFloat(current) 
            prev = ''
        }
    document.getElementById("current").innerHTML = current
    document.getElementById("prev").innerHTML = prev
    console.log(key)
}

【问题讨论】:

    标签: javascript html calculator


    【解决方案1】:

    你的parseFloat() 删除它

    例如,如果我在控制台parseFloat('1.') 中运行,它将返回 1

    编辑:

    你可以做的解决方案:

          if (key >= 0) {
            tempcurrent = tempcurrent + key;
            current = parseFloat(tempcurrent);
          }
          if (key == ".") {
            tempcurrent = tempcurrent + key;
            current = tempcurrent;
          }
    

    附:您可以使用 switch 获得更好的代码

    【讨论】:

    • ParseFloat() 有助于我的计算。还有什么我可以用的吗?
    • 看我的编辑,你可以为它做一个特殊情况
    猜你喜欢
    • 2022-12-16
    • 2017-03-13
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多