软件园学生在线

  • {{ item.name }}
  • 2023试用期

登录与注册

【后端一】赵子峰

  • 赵子峰
  • 2022-10-15
  • 2

基于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();
    }
    }
赵子峰
赵子峰
© 2025 软件园学生在线
Theme by Wing