简单的四则运算
(可能会有失误且不少o.0)
产品说明
(其实不需要说明((()
使用说明
(简单明了)
1.首先运行后端
2.然后打开前端网站http://localhost:63342/Homework1/templates/%E8%AE%A1%E7%AE%97%E5%99%A8.html?_ijt=rvjo41u5pndjdbmijpt9o6joua&_ij_reload=RELOAD_ON_SAVE
3.进入后根据自己的需要选择算法
4.依次输入第一和第二个数字,然后点击提交就可以得出你所求的结果。
特殊情况
1.0.1+0。2=0.30004的情况:运用Bigdecimal进行了精确运算;
2.除法运算分母不能为零的情况:运用if语句进行了判断,若分母为零则会输出分母不能为零;
3.支持小数运算:运用了double
4.判断数据类型是否有误:修改了一下前端的配置(学长亲口说我们后端要做到前后端全能)虽然我后端还不是很精通(((
5.解决数据溢出问题:可以先用float类型赋值然后扩大到double类型,由于double范围比float大,所以就可以避免数据溢出。
学习历程
(复杂坎坷伤脑筋)
1.首先再次观看了学长的讲解录播;
2.查阅了为什么会出现计算不精确的问题以及Bigdecimal的相关知识;
3.查阅了如何修改前端页面及一些简单的应用场景,例如如何只输入数字和小数点;
4.熟练掌握了divide的用法,divide包括三个参数:第一个参数是除数,第二个参数是小数位数scale(可以不写,但其默认位数为小数点后一位),第三个参数是舍入模式;
5.查阅了如何解决数据溢出问题。
Controller代码
package com.example.homework1.controller;
import com.example.homework1.service.HomeworkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.regex.Pattern;
@RestController
@RequestMapping("/math")
public class HomeworkController {
@Autowired
HomeworkService homeworkService;
@GetMapping("/add")
public Object add(@RequestParam double a, @RequestParam double b) {
return homeworkService.add( a, b);
}
@GetMapping("/subtract")
public Object subtract(@RequestParam double a, @RequestParam double b){
return homeworkService.subtract( a, b );
}
@GetMapping("/multiply")
public Object multiply(@RequestParam double a, @RequestParam double b){
return homeworkService.multiply( a,b );
}
@GetMapping("/divide")
public Object divide(@RequestParam double a, @RequestParam double b){
return homeworkService.divide(a, b);
}
}
Service代码
package com.example.homework1.service;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import static java.math.RoundingMode.HALF_UP;
@Service
public class HomeworkService {
public Object add(double a, double b) {
BigDecimal c = BigDecimal.valueOf(a);
BigDecimal d = BigDecimal.valueOf(b);
return c.add(d);
}
public Object subtract(double a, double b) {
BigDecimal c = BigDecimal.valueOf(a);
BigDecimal d = BigDecimal.valueOf(b);
return c.subtract(d);
}
public Object multiply(double a, double b) {
BigDecimal c = BigDecimal.valueOf(a);
BigDecimal d = BigDecimal.valueOf(b);
return c.multiply(d);
}
public Object divide(double a, double b) {
BigDecimal c = BigDecimal.valueOf(a);
BigDecimal d = BigDecimal.valueOf(b);
if (b==0){
return "分母不能为零";}
else{
// 设置除法的小数位数为10
int scale = 10;
// 使用divide()函数进行除法计算
BigDecimal result = c.divide(d, scale,HALF_UP);
return result;
}
}
}
前端html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>计算器</title>
</head>
<body>
<h2>加法</h2>
<form action="http://localhost:8080/math/add"method="get">
第一个数字:<input type="text" class="txt" name="a" value="" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'')"><br>
第二个数字:<input type="text" class="txt" name="b" value="" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'')"><br>
<input type="submit" value="提交">
</form>
</body>
<body>
<h2>减法</h2>
<form action="http://localhost:8080/math/subtract"method="get">
第一个数字:<input type="text" class="txt" name="a" value="" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'')"><br>
第二个数字:<input type="text" class="txt" name="b" value="" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'')"><br>
<input type="submit" value="提交">
</form>
</body>
<body>
<h2>乘法</h2>
<form action="http://localhost:8080/math/multiply"method="get">
第一个数字:<input type="text" class="txt" name="a" value="" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'')"><br>
第二个数字:<input type="text" class="txt" name="b" value="" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'')"><br>
<input type="submit" value="提交">
</form>
</body>
<body>
<h2>除法</h2>
<form action="http://localhost:8080/math/divide"method="get">
第一个数字:<input type="text" class="txt" name="a" value="" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'')"><br>
第二个数字:<input type="text" class="txt" name="b" value="" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'')"><br>
<input type="submit" value="提交">
</form>
</body>
</html>