就是这个样的粗爆,手搓一个计算器:科学计算器

作为程序员,没有合适的工具,就得手搓一个,PC端,移动端均可适用。废话不多说,直接上代码。
HTML:
<div class="calculator"><div class="display-wrapper"><div class="display" id="display">0</div></div><div class="buttons"><button onclick="clearDisplay()">C</button><button onclick="deleteLast()">←</button><button onclick="appendOperator('(')">(</button><button onclick="appendOperator(')')">)</button><button onclick="appendNumber('7')">7</button><button onclick="appendNumber('8')">8</button><button onclick="appendNumber('9')">9</button><button onclick="appendOperator('/')">/</button><button onclick="appendNumber('4')">4</button><button onclick="appendNumber('5')">5</button><button onclick="appendNumber('6')">6</button><button onclick="appendOperator('*')">*</button><button onclick="appendNumber('1')">1</button><button onclick="appendNumber('2')">2</button><button onclick="appendNumber('3')">3</button><button onclick="appendOperator('-')">-</button><button onclick="appendNumber('0')" class="zero">0</button><button onclick="appendDot()">.</button><button onclick="appendOperator('+')">+</button><button onclick="calculate()">=</button></div><div class="buttons scientific"><button onclick="calculateFunction('sin')">sin</button><button onclick="calculateFunction('cos')">cos</button><button onclick="calculateFunction('tan')">tan</button><button onclick="calculateFunction('log')">log</button><button onclick="calculateFunction('sqrt')">√</button><button onclick="calculateFunction('pow2')">x²</button><button onclick="calculateFunction('pow3')">x³</button><button onclick="calculateFunction('exp')">eˣ</button><button onclick="calculateFunction('ln')">ln</button><button onclick="calculateFunction('fact')">n!</button><button onclick="calculateFunction('reciprocal')">1/x</button><button onclick="calculateFunction('pi')">π</button></div>
</div>
JS:
let displayValue = '0';function updateDisplay() {document.getElementById('display').textContent = displayValue;
}function clearDisplay() {displayValue = '0';updateDisplay();
}function deleteLast() {if (displayValue.length > 1) {displayValue = displayValue.slice(0, -1);} else {displayValue = '0';}updateDisplay();
}function appendNumber(number) {if (displayValue === '0') {displayValue = number;} else {displayValue += number;}updateDisplay();
}function appendOperator(operator) {displayValue += operator;updateDisplay();
}function appendDot() {if (!displayValue.includes('.')) {displayValue += '.';}updateDisplay();
}function calculate() {try {displayValue = eval(displayValue).toString();} catch (error) {displayValue = 'Error';}updateDisplay();
}function calculateFunction(func) {try {let value = parseFloat(displayValue);switch (func) {case 'sin':displayValue = Math.sin(value).toString();break;case 'cos':displayValue = Math.cos(value).toString();break;case 'tan':displayValue = Math.tan(value).toString();break;case 'log':displayValue = Math.log10(value).toString();break;case 'sqrt':displayValue = Math.sqrt(value).toString();break;case 'pow2':displayValue = Math.pow(value, 2).toString();break;case 'pow3':displayValue = Math.pow(value, 3).toString();break;case 'exp':displayValue = Math.exp(value).toString();break;case 'ln':displayValue = Math.log(value).toString();break;case 'fact':displayValue = factorial(value).toString();break;case 'reciprocal':displayValue = (1 / value).toString();break;case 'pi':displayValue = Math.PI.toString();break;}} catch (error) {displayValue = 'Error';}updateDisplay();
}function factorial(n) {if (n === 0 || n === 1) return 1;return n * factorial(n - 1);
}
CSS:
body {font-family: Arial, sans-serif;display: flex;flex-direction: column;align-items: center;justify-content: center;height: 100vh;margin: 0;background-color: #f4f4f9;
}.calculator {width: 350px;background-color: #333;border-radius: 10px;box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
}.display-wrapper {background-color: #444;padding: 20px;border-radius: 10px 10px 0 0;overflow-x: auto;overflow-y: hidden;
}.display {color: white;font-size: 36px;text-align: right;white-space: nowrap;min-width: 100%;
}.buttons {display: grid;grid-template-columns: repeat(4, 1fr);gap: 1px;
}button {font-size: 18px;padding: 20px;background-color: #555;border: none;color: white;cursor: pointer;
}button:hover {background-color: #666;
}.zero {grid-column: span 1;
}.scientific {grid-template-columns: repeat(4, 1fr);margin-top: 5px;
}.guide {margin-top: 20px;max-width: 350px;color: #666;font-size: 14px;
}
线上运行,可以直接打开:科学计算器
相关文章:
就是这个样的粗爆,手搓一个计算器:科学计算器
作为程序员,没有合适的工具,就得手搓一个,PC端,移动端均可适用。废话不多说,直接上代码。 HTML: <div class"calculator"><div class"display-wrapper"><div class"display…...
wordpress使用popup弹窗插件的对比
您在寻找最好的 WordPress 弹出插件吗?大多数网站利用某种形状或形式的弹出窗口来将访问者指向他们希望他们去的地方。例如,这可能用于结帐、电子邮件订阅或用于生成潜在客户。 表现 弹出插件会减慢您的网站速度。当插件使用 WordPress 跟踪弹出窗口的…...
开源OpenStack
1.查询HCS基于OpenStack哪个版本开发 2.九大核心组件 OpenStack可以对接FC也可以对接KVM主机;(OpenStack 对接华为FusionCompute,一个集群对应 openstack 一台计算主机)-引申出nova compute 2.1nova nova两个核心组件nova contro…...
基于Spring Boot+vue技术的导游系统设计与实现
论文下载【免费】基于SpringBootvue技术的导游系统设计与实现资源-CSDN文库 摘 要 本研究背景主要聚焦于当前旅游业信息化、智能化的发展趋势。随着移动互联网的普及和人们出行方式的多样化,导游系统作为旅游服务的重要组成部分,亟需进行技术革新以提…...
软件测试 —— 灰度测试及测试流程!
软件测试中的灰度测试是一种结合了黑盒测试和白盒测试特点的测试方法,旨在通过逐步扩大测试范围来评估新系统或新功能在真实环境中的性能和稳定性。灰度测试是软件开发过程中的一个重要环节,它有助于在全面发布前发现并修复潜在问题,同时收集…...
中科星图GVE(案例)——AI实现光伏面板提取
目录 简介 函数 gve.Services.AI.solarExtraction(image) 代码 结果 知识星球 机器学习 简介 光伏面板提取是一种将光伏面板从图像或视频中准确地分割出来的任务,可以通过使用深度学习算法来实现。 以下是一种基于深度学习的光伏面板提取的实现步骤&#x…...
一种压缩QRCode矩阵以用于存储的方法
通常QRCode由服务器生成,以图片格式发送到客户端,由客户端直接展示,也可以由客户端使用javascript或其他内置的SDK直接生成。 0、需求 QRCode生成过程中往往是先生成矩阵,然后使用矩阵生成图片,矩阵就是由01组成的一…...
鸿蒙HarmonyOS开发:系统服务
拨打电话 call.makeCall 跳转到拨号界面,并显示待拨出的号码。使用callback异步回调。 makeCall(phoneNumber: string, callback: AsyncCallback<void>): voidimport { call } from kit.TelephonyKit;import { BusinessError } from kit.BasicServicesKit;c…...
【Go】GO语言知识总结浅析
Go语言是一种现代化的编程语言,由Google于2007年设计并于2009年发布。它旨在使编程变得简单、高效,并且可以在多核处理器上轻松构建高性能应用。Go语言的编程思想、发展历史、版本特点、运行原理、数据类型、应用场景,以及在web开发、网络编程…...
GWO-Transformer-LSTM灰狼算法优化深度学习多变量回归预测(Maltab)
GWO-Transformer-LSTM灰狼算法优化深度学习多变量回归预测(Maltab) 目录 GWO-Transformer-LSTM灰狼算法优化深度学习多变量回归预测(Maltab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现灰狼算法OOA-Transf…...
上市公司企业供应链抵抗力数据集(2012-2023年)
一、测算方式:参考《财经研究》张树山(2024)老师的做法,供应链抵抗力(Resis)体现了供应链运行状态的稳定性,即在应对外部扰动时,供应链仍能维持循环畅通。本文从稳固供应链关系来筛选…...
javaWeb项目-ssm+jsp-XX牙科诊所管理系统功能介绍
本项目源码(点击下方链接下载):java-ssmjsp私人牙科诊所管理系统实现源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端&…...
tcp_rmem中有三个值4896 131072 6291456是什么意思,有什么作用?
在 TCP 中,tcp_rmem参数的三个值分别具有以下含义和作用: 一、含义 “4896”: 通常代表 TCP 接收缓冲区的最小大小。这是接收端为接收数据预先分配的最小内存空间。当网络中数据量较小时,这个最小缓冲区可以确保有足够的空间来存储…...
转行AI产品经理:高薪诱惑,年薪90万不是梦!
近期有很多社招的小伙伴都在看转行的机会,同时马上要到了秋招的季节,校招生们都在积极选择第一份工作。所有人想要进入一个有前景、高薪高潜力的黄金赛道。 2024年如果大家看新机会,重点给大家推荐AI领域的岗位。先看一组数据: …...
javaWeb项目-ssm+jsp股票交易管理系统功能介绍
本项目源码(点击下方链接下载):java-ssmjsp股票交易管理系统实现源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端ÿ…...
CentOS上安装SSL证书教程
在 CentOS 上,apt-get 是不可用的,因为 CentOS 使用的是 yum 或 dnf 包管理器。你可以通过 yum 或 dnf 安装 certbot 和 python3-certbot-nginx。以下是详细的步骤: 1. 启用 EPEL(Extra Packages for Enterprise Linux࿰…...
单目相机和双目相机定位
1、单目相机 1.1模型 单目相机成像模型为小孔成像,涉及的坐标系包括世界坐标系、相机坐标系、图像坐标系以及像素坐标系。坐标系之间的转换关系如下: 1.2参数求解 张正友相机标定方法、设定世界坐标系精确求解 2、双目相机 2.1、模型 一般双目立体视…...
【Cadence27】HDL拷贝工程➕Allegro导出DXF和3D文件STP
【转载】Cadence Design Entry HDL 使用教程 【Cadence01】Cadence PCB Edit相对延迟与绝对延迟的显示问题 【Cadence02】Allegro引脚焊盘Pin设置为透明 【Cadence03】cadence不小心删掉钢网层怎么办? 【Cadence04】一般情况下Allegro PCB设计时的约束规则设置&a…...
拓扑学与集合论的关系
目录 1. 关于拓扑学的概念 2. 集合论和拓扑学的关系 3. 拓扑空间 1. 关于拓扑学的概念 汉译的“拓扑学”对应的英文是“topology”,更贴近其本义的翻译有“地志学”、“位相学”、等等,其原本词义是表示“研究位置分布的学科”。“topo-”表示…...
设计模式——代理模式(6)
一、写在前面 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
