基于Spring boot的四则运算API
关于如何使用:
1. 加法:运行程序后网页搜索localhost:8080/add?a=#&b=#
2. 减法:运行程序后网页搜索localhost:8080/subtract?a=#&b=#
3. 乘法:运行程序后网页搜索localhost:8080/multiply?a=#&b=#
4. 除法:运行程序后网页搜索localhost:8080/divide?a=#&b=#
关于特殊情况及其处理:
1. 在进行除法运算时可能会出现无限小数的特殊情况,此时需要保留有限位小数并进行四舍五入处理。
- 除法:divide(BigDecimal bd,int scale, RoundingMode mode)。
- 参数scale:指定精确到小数点后几位。
-
参数mode:指定小数部分的取舍模式,通常采用四舍五入的模式。
取值为BigDecimal.ROUND_HALF_UP。2. 在使用int/double进行整数/浮点数运算时可能会出现数据过大而溢出的情况,这里采用BigDecimal类来解决这一问题同时将整数的四则运算升级为实数的四则运算。
- 位置:java.math包中。
- 作用:精确计算浮点数。
- 基本用法(创建方式):
public double divide(@RequestParam double a, @RequestParam double b) { BigDecimal b1 = new BigDecimal(Double.toString(a)); BigDecimal b2 = new BigDecimal(Double.toString(b)); return b1.divide(b2).doubleValue();
关于学习历程:
1.回顾了后端第一次培训的文档,并再次进行代码实现。
2.通过b站大学及CSDN进行BigDecimal的学习并学会了如何判断数据是否溢出,并进行代码实现,将整数的四则运算上升为实数的四则运算,并解决了整数/浮点数溢出的问题。
3.关于BigDecimal的使用上面已经说过,下面拓展一些整数溢出的判断方式:
- 对于加法运算:
- 对于乘法运算:
- 使用long long类型提前判断int大小:
关于代码实现:
package com.example.springboot.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; @RestController public class Main { @GetMapping("/add") public double add(@RequestParam double a, @RequestParam double b) { BigDecimal b1 = new BigDecimal(Double.toString(a)); BigDecimal b2 = new BigDecimal(Double.toString(b)); return b1.add(b2).doubleValue(); } @GetMapping("/subtract") public double subtract(@RequestParam double a, @RequestParam double b) { BigDecimal b1 = new BigDecimal(Double.toString(a)); BigDecimal b2 = new BigDecimal(Double.toString(b)); return b1.subtract(b2).doubleValue(); } @GetMapping("/multiply") public double multiply(@RequestParam double a, @RequestParam double b) { BigDecimal b1 = new BigDecimal(Double.toString(a)); BigDecimal b2 = new BigDecimal(Double.toString(b)); return b1.multiply(b2).doubleValue(); } @GetMapping("/divide") public double divide(@RequestParam double a, @RequestParam double b) { BigDecimal b1 = new BigDecimal(Double.toString(a)); BigDecimal b2 = new BigDecimal(Double.toString(b)); return b1.divide(b2).doubleValue(); } }