Java:使用BigDecimal、NumberFormat和DecimalFormat保留小数

news2024/9/21 16:40:00

一、代码和调试结果

1.1 BigDecimal

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fa36749de8124266a730817710fdf737.png)
1.2 DecimalFormat

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 NumberFormat

在这里插入图片描述

二、原代码

BigDecimalUtil.java 代码

package utils;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalUtil {
    // 默认除法运算精度
    private static final int DEFAULT_DIV_SCALE = 5;

    /**
     * 提供精确的加法运算
     *
     * @param v1
     * @param v2
     * @return
     */
    public static double add(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.add(b2).doubleValue();
    }

    public static String add(String v1, String v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.add(b2).toString();
    }

    /**
     * 提供精确的减法运算
     *
     * @param v1
     * @param v2
     * @return
     */
    public static double subtract(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.subtract(b2).doubleValue();
    }

    public static String substract(String v1, String v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.subtract(b2).toString();
    }

    /**
     * 提供精确的乘法运算
     *
     * @param v1
     * @param v2
     * @return
     */
    public static double multiply(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.multiply(b2).doubleValue();
    }

    public static String multiply(String v1, String v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.multiply(b2).toString();
    }

    /**
     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入,舍入模式采用ROUND_HALF_UP
     *
     * @param v1
     * @param v2
     * @return 两个参数的商
     */
    public static double divide(double v1, double v2) {
        return divide(v1, v2, DEFAULT_DIV_SCALE);
    }

    /**
     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。舍入模式采用ROUND_HALF_UP
     *
     * @param v1
     * @param v2
     * @param scale
     *            表示需要精确到小数点以后几位。
     * @return 两个参数的商
     */
    public static double divide(double v1, double v2, int scale) {
        return divide(v1, v2, scale, RoundingMode.HALF_UP);
    }

    /**
     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。舍入模式采用用户指定舍入模式
     *
     * @param v1
     * @param v2
     * @param scale
     *            表示需要精确到小数点以后几位
     * @param round_mode
     *            表示用户指定的舍入模式
     * @return 两个参数的商
     */
    public static double divide(double v1, double v2, int scale, RoundingMode round_mode) {
        if (scale < 0) {
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.divide(b2, scale, round_mode).doubleValue();
    }

    /**
     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入,舍入模式采用ROUND_HALF_EVEN
     *
     * @param v1
     * @param v2
     * @return 两个参数的商,以字符串格式返回
     */
    public static String divide(String v1, String v2) {
        return divide(v1, v2, DEFAULT_DIV_SCALE);
    }

    /**
     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。舍入模式采用ROUND_HALF_UP
     *
     * @param v1
     * @param v2
     * @param scale
     *            表示需要精确到小数点以后几位
     * @return 两个参数的商,以字符串格式返回
     */
    public static String divide(String v1, String v2, int scale) {
        return divide(v1, v2, scale, RoundingMode.HALF_UP);
    }

    /**
     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。舍入模式采用用户指定舍入模式
     *
     * @param v1
     * @param v2
     * @param scale
     *            表示需要精确到小数点以后几位
     * @param round_mode
     *            表示用户指定的舍入模式
     * @return 两个参数的商,以字符串格式返回
     */
    public static String divide(String v1, String v2, int scale, RoundingMode round_mode) {
        if (scale < 0) {
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.divide(b2, scale, round_mode).toString();
    }

    /**
     * 提供精确的小数位四舍五入处理,舍入模式采用ROUND_HALF_EVEN
     *
     * @param v
     *            需要四舍五入的数字
     * @param scale
     *            小数点后保留几位
     * @return 四舍五入后的结果
     */
    public static double round(double v, int scale) {
        return round(v, scale, RoundingMode.HALF_UP);
    }

    /**
     * 提供精确的小数位四舍五入处理
     *
     * @param v
     *            需要四舍五入的数字
     * @param scale
     *            小数点后保留几位
     * @param round_mode
     *            指定的舍入模式
     * @return 四舍五入后的结果
     */
    public static double round(double v, int scale, RoundingMode round_mode) {
        if (scale < 0) {
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        BigDecimal b = new BigDecimal(Double.toString(v));
        return b.setScale(scale, round_mode).doubleValue();
    }

    /**
     * 提供精确的小数位四舍五入处理,舍入模式采用ROUND_HALF_UP
     *
     * @param v
     *            需要四舍五入的数字
     * @param scale
     *            小数点后保留几位
     * @return 四舍五入后的结果,以字符串格式返回
     */
    public static String round(String v, int scale) {
        return round(v, scale, RoundingMode.HALF_UP);
    }

    /**
     * 提供精确的小数位四舍五入处理
     *
     * @param v
     *            需要四舍五入的数字
     * @param scale
     *            小数点后保留几位
     * @param round_mode
     *            指定的舍入模式
     * @return 四舍五入后的结果,以字符串格式返回
     */
    public static String round(String v, int scale, RoundingMode round_mode) {
        if (scale < 0) {
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        BigDecimal b = new BigDecimal(v);
        return b.setScale(scale, round_mode).toString();
    }
}

TestBigDecimal.java代码

package test;

import utils.BigDecimalUtil;
import utils.PrintlnUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class TestBigDecimal {
    public static void main(String[] args) {
        test1();
        test2();
    }

    public static void test1() {
        BigDecimal a = new BigDecimal("10");
        BigDecimal b = new BigDecimal("5");
        BigDecimal c = null;

        /*
            RoundingMode.HALF_UP
            5.5     6
            2.5     3
            1.6     2
            1.1     1
            1.0     1
           -1.0    -1
           -1.1    -1
           -1.6    -2
           -2.5    -3
           -5.5    -6

            ------------------------------

            BigDecimal.ROUND_CEILING
            5.5         6
            2.5         3
            1.6         2
            1.1         2
            1.0         1
           -1.0        -1
           -1.1        -1
           -1.6        -1
           -2.5        -2
           -5.5        -5
         */

        //1.加法-add
//          c = a.add(b);
        //c = 15
//        c = a.add(b).setScale(2,BigDecimal.ROUND_HALF_UP) // 过时了
        c = a.add(b).setScale(2, RoundingMode.HALF_UP);// 2 表示:保留两位小数
        PrintlnUtils.println("c = " + c);
        //c = 15.00

        //2.减法-subtract
        c = a.subtract(b).setScale(2, RoundingMode.HALF_UP);
        PrintlnUtils.println("c = " + c);
        // c = 5.00

        String substract = BigDecimalUtil.substract("10", "5");
        PrintlnUtils.println("BigDecimalUtil.substract = " + substract);
        // BigDecimalUtil.substract = 5

        String substract2 = BigDecimalUtil.substract("10.00", "5");
        PrintlnUtils.println("BigDecimalUtil.substract = " + substract2);
        // BigDecimalUtil.substract = 5.00

        String substract3 = BigDecimalUtil.substract("10.0", "5");
        PrintlnUtils.println("BigDecimalUtil.substract = " + substract3);
        // BigDecimalUtil.substract = 5.0

        String substract4 = BigDecimalUtil.substract("10.0", "5.00");
        PrintlnUtils.println("BigDecimalUtil.substract = " + substract4);
        // BigDecimalUtil.substract = 5.00

        String substract5 = BigDecimalUtil.substract("10", "5.0");
        PrintlnUtils.println("BigDecimalUtil.substract = " + substract5);
        // BigDecimalUtil.substract = 5.0


        //乘法-multiply
        c = a.multiply(b).setScale(2, RoundingMode.HALF_UP);
        PrintlnUtils.println("c = " + c);
        // c = 50.00

        //除法-divide
        c = a.divide(b).setScale(2, RoundingMode.HALF_UP);
        PrintlnUtils.println("c = " + c);
        //c = 2.00

        c = a.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
        PrintlnUtils.println("c = " + c);
        //c = 0.10

        //整数舍弃零
        DecimalFormat df = new DecimalFormat("###.##");
        String s1 = df.format(new BigDecimal(88.88));
        String s2 = df.format(new BigDecimal(66.00));
        String s3 = df.format(new BigDecimal(66.15));
        String s4 = df.format(new BigDecimal(-66.15));
        String s5 = df.format(new BigDecimal(666.15));
        String s6 = df.format(new BigDecimal(666.10));
        String s7 = df.format(new BigDecimal(666.1));
        String s8 = df.format(new BigDecimal(666.5));
        String s9 = df.format(new Double(10666.50));
        String s92 = df.format(new Double(10666.52));
        String s93 = df.format(new Double(10666.3));
        String s94 = df.format(new Double(10666.00));
        String s95 = df.format(new Double(10666.5));
        PrintlnUtils.println("s1 = "+s1);//  s1 = 88.88
        PrintlnUtils.println("s2 = "+s2);//  s2 = 66
        PrintlnUtils.println("s3 = "+s3);//  s3 = 66.15
        PrintlnUtils.println("s4 = "+s4);//  s4 = -66.15
        PrintlnUtils.println("s5 = "+s5);//  s5 = 666.15
        PrintlnUtils.println("s6 = "+s6);//  s6 = 666.1
        PrintlnUtils.println("s7 = "+s7);//  s7 = 666.1
        PrintlnUtils.println("s8 = "+s8);//  s8 = 666.5
        PrintlnUtils.println("s9 = "+s9);//  s9 = 10666.5
        PrintlnUtils.println("s92 = "+s92);//  s92 = 10666.52
        PrintlnUtils.println("s93 = "+s93);//  s93 = 10666.3
        PrintlnUtils.println("s94 = "+s94);//  s94 = 10666
        PrintlnUtils.println("s95 = "+s95);//  s95 = 10666.5
    }

    public static void test2() {
        PrintlnUtils.println("test2 ---------------------------------------------------------------------------------------");
        // BigDecimal
        // 保留两位小数
        System.out.println(new BigDecimal(0.2).setScale(2, RoundingMode.HALF_UP).doubleValue());// 0.2
        System.out.println(new BigDecimal(0.235).setScale(2, RoundingMode.HALF_UP).doubleValue());// 0.23
        System.out.println(new BigDecimal(0.2351).setScale(2, RoundingMode.HALF_UP).doubleValue());// 0.24
        System.out.println(new BigDecimal(42).setScale(2, RoundingMode.HALF_UP).doubleValue());// 42.0
        PrintlnUtils.println(" ---------------------------------------------------------------------------------------");
        System.out.println(new BigDecimal(0.2).setScale(2, RoundingMode.HALF_UP));// 0.20
        System.out.println(new BigDecimal(0.235).setScale(2, RoundingMode.HALF_UP));// 0.23
        System.out.println(new BigDecimal(0.2351).setScale(2, RoundingMode.HALF_UP));// 0.24
        System.out.println(new BigDecimal(42).setScale(2, RoundingMode.HALF_UP));// 42.00

        PrintlnUtils.println(" ---------------------------------------------------------------------------------------");

        // NumberFormat
        // 保留两位小数,个位无数字填充 0
        NumberFormat nformat  = NumberFormat.getInstance();
        nformat.setMaximumFractionDigits(2);
        System.out.println(nformat.format(0.2));// 0.2
        System.out.println(nformat.format(0.235));// 0.23
        System.out.println(nformat.format(0.2351));// 0.24
        System.out.println(nformat.format(42));// 42

        PrintlnUtils.println(" ---------------------------------------------------------------------------------------");

        // DecimalFormat,是NumberFormat的具体实现子类
        // 保留两位小数,对应位上无数字填充0
        DecimalFormat df = new DecimalFormat("#0.00");
        df.setRoundingMode(RoundingMode.CEILING);

        System.out.println(df.format(0.2));// 0.20
        System.out.println(df.format(0.235));// 0.23
        System.out.println(df.format(0.2351));// 0.24, 因为0.2351在0.23-0.24之间,距离0.24更近,所以输出0.24
        System.out.println(df.format(42));// 42.00

        PrintlnUtils.println(" ---------------------------------------------------------------------------------------");


        DecimalFormat df4 = new DecimalFormat();

        // #:位置上无数字不显示
        df4.applyPattern("#.##");
        System.out.println(df4.format(345235.0));// 345235
        System.out.println(df4.format(345235.01245));// 345235
        System.out.println(df4.format(345235.0156));// 345235
        System.out.println(df4.format(345235.425));// 345235

        PrintlnUtils.println(" ---------------------------------------------------------------------------------------");

        DecimalFormat df42 = new DecimalFormat("0.00");
        System.out.println(df42.format(345235.0));
        System.out.println(df42.format(345235.01245));
        System.out.println(df42.format(345235.0156));
        System.out.println(df42.format(345235.425));

        //345235.00
        //345235.01
        //345235.02
        //345235.42

        PrintlnUtils.println(" ---------------------------------------------------------------------------------------");

        df42.setRoundingMode(RoundingMode.CEILING);

        System.out.println(df42.format(345235.0));
        System.out.println(df42.format(345235.01245));
        System.out.println(df42.format(345235.0156));
        System.out.println(df42.format(345235.425));

        //345235.00
        //345235.02
        //345235.02
        //345235.43

        PrintlnUtils.println(" ---------------------------------------------------------------------------------------");

        // 0:位置上无数字显示0
        df4.applyPattern("0.00");
        System.out.println(df4.format(345235.0));// 345235.00
        System.out.println(df4.format(345235));// 345235.00

        // 加负数显示
        df4.applyPattern("-0.00");
        System.out.println(df4.format(345235.34567));// -345235.35

        // 逗号分隔
        df4.applyPattern("-0,000.00");
        System.out.println(df4.format(345235.34567));// -345,235.35

        // 百分位
        df4.applyPattern("0.00%");
        System.out.println(df4.format(0.34567));// 34.57%
        // 千分位
        df4.applyPattern("0.00\u2030");
        System.out.println(df4.format(0.34567));// 345.67‰

        // 科学计数法,E之前是底数的格式,E之后的是指数的格式
        df4.applyPattern("0.00E00");
        System.out.println(df4.format(2342.444));// 2.34E03

        // 格式后面加单位符号
        df4.applyPattern("0.00 KG");
        System.out.println(df4.format(2342.444));// 2342.44 KG
        // 格式前面加单位符号
        df4.applyPattern("$ 0.00");
        System.out.println(df4.format(2342.444));// $ 2342.44

        df4.applyPattern("0.00 QA");
        System.out.println(df4.format(2342.444));// 2342.44 QA

        // 使用舍入模式:ROUND_HALF_EVEN,
        // 保留位数是奇数,使用ROUND_HALF_DOWN
        // 保留位数是偶数,使用ROUND_HALF_UP
//        df4.setRoundingMode(RoundingMode.HALF_UP);
        System.out.println(df4.format(2342.435));// 2342.43 QA
        System.out.println(df4.format(2342.445));// 2342.45 QA

        // String.format
        // 保留两位小数,个位数及小数点后两位无数字填充0,四舍五入
        System.out.println(String.format("%.2f", 0.2));// 0.20
        System.out.println(String.format("%.2f", 0.235));// 0.24
        System.out.println(String.format("%.2f", 0.236));// 0.24
        System.out.println(String.format("%.2f", 42.0));// 42.00
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1680141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NAT技术总结与双向NAT配置案例

NAT的转换方式&#xff1a; 1.静态转换&#xff1a;固定的一对一IP地址映射。 interface GigabitEthernet0/0/1 ip address 122.1.2.24 nat static global 122.1.2.1 inside 192.168.1.1 #在路由器出接口 公网地址 私网地址。 2.动态转换&#xff1a;Basic NAT nat address-gr…

[ROS 系列学习教程] 建模与仿真 - URDF 建模实践

ROS 系列学习教程(总目录) 本文目录 一、机器人结构组成二、新建功能包三、编写launch文件四、创建底盘五、添加轮子六、添加其他部件七、解决部分实体位于地面以下的问题 前文介绍了URDF建模与URDF语法&#xff0c;接下来介绍怎么使用URDF从零构建一个机器人模型并在rviz中显示…

智能防疫电梯模拟控制系统设计-设计说明书

设计摘要&#xff1a; 本设计是基于单片机的智能防疫电梯模拟控制系统&#xff0c;主要实现了多项功能。首先&#xff0c;系统进行无接触测温&#xff0c;如果温度正常则可以启动电梯运行&#xff0c;如果温度异常则电梯会报警提示有乘客体温异常&#xff0c;电梯不会运行。其…

Java——CLASSPATH配置

什么是CLASSPATH&#xff1f; 答&#xff1a; classpath类似于windows中的系统环境变量path。 在windows中&#xff0c;如果要想在DOS命令窗口中执行一个程序。系统会先去当前文件路径下找对应命令的执行程序。如果找不到&#xff0c;就会到系统环境变量path中挨个遍历每一个路…

代码随想录算法训练营第二十五天:树的最后学习

代码随想录算法训练营第二十五天&#xff1a;树的最后学习 如果不对递归有深刻的理解&#xff0c;本题有点难 单纯移除一个节点那还不够&#xff0c;要修剪&#xff01; #669. 修剪二叉搜索树 力扣题目链接(opens new window) 给定一个二叉搜索树&#xff0c;同时给定最小边界…

vs2019 c++里用 typeid() . name () 与 typeid() . raw_name () 测试数据类型的区别

&#xff08;1&#xff09; 都知道&#xff0c;在 vs2019 里用 typeid 打印的类型不大准&#xff0c;会主动去掉一些修饰符&#xff0c; const 和引用 修饰符会被去掉。但也可以给咱们验证学到的代码知识提供一些参考。那么今天发现其还有 raw_name 成员函数&#xff0c;这个函…

Qt多文档程序的一种实现

注&#xff1a;文中所列代码质量不高&#xff0c;但不影响演示我的思路 实现思路说明 实现DemoApplication 相当于MFC中CWinAppEx的派生类&#xff0c;暂时没加什么功能。 DemoApplication.h #pragma once#include <QtWidgets/QApplication>//相当于MFC中CWinAppEx的派生…

【RAG 论文】IRCoT:基于 CoT 的交叉检索解决多步骤问题

论文&#xff1a;Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions ⭐⭐⭐⭐ ACL 2023, arXiv:2212.10509 Code: github.com/stonybrooknlp/ircot 论文速读 大多数 RAG 都是一次检索来辅助 LLM 生成&#xff0c;但是面对…

fastjson1.2.68对于文件操作的分析最全

fastjson1.2.68对于文件操作的分析 前言分析复制文件写入文件清空文件读取文件分析poc拓宽场景极限环境poc优化修改再次优化poc的分析 前言 这次分析也是分析了很久&#xff0c;因为每个链子都是自己去跟着分析了的&#xff0c;然后主要是去学习了一下怎么去挖链子 分析 前面…

洛谷P1364 医院设置

P1364 医院设置 题目描述 设有一棵二叉树&#xff0c;如图&#xff1a; 其中&#xff0c;圈中的数字表示结点中居民的人口。圈边上数字表示结点编号&#xff0c;现在要求在某个结点上建立一个医院&#xff0c;使所有居民所走的路程之和为最小&#xff0c;同时约定&#xff0c…

四、基于Stage模型的应用架构设计

前面我们了解了如何构建鸿蒙应用以及开发了第一个页面&#xff0c;这只是简单的demo&#xff1b;那么如何去设计&#xff0c;从0到1搭建一个真正的应用呢 一、基本概念 1、Stage模型基本概念 Stage模型概念图 AbilityStage&#xff1a;是一个Module级别的组件容器&#xff0…

红蓝对抗 网络安全 网络安全红蓝对抗演练

什么是红蓝对抗 在军事领域&#xff0c;演习是专指军队进行大规模的实兵演习&#xff0c;演习中通常分为红军、蓝军&#xff0c;演习多以红军守、蓝军进攻为主。类似于军事领域的红蓝军对抗&#xff0c;网络安全中&#xff0c;红蓝军对抗则是一方扮演黑客&#xff08;蓝军&…

BUUCTF靶场[MISC]wireshark、被嗅探的流量、神秘龙卷风、另一个世界

[misc]wireshark 考点&#xff1a;流量、追踪流 工具&#xff1a;wireshark 先看题目&#xff0c;管理员密码 将下载的文件用wireshark打开&#xff0c;查找flag 点击追踪tcp流&#xff0c;开始挨个查看flag [misc]被嗅探的流量 考点&#xff1a;流量、追踪流 工具&#xf…

类和对象、包等知识总结Java

类 类的概念&#xff1a;类是用来对一个实体&#xff08;对象&#xff09;进行描述的&#xff0c;主要描述该对象的属性&#xff0c;功能等。 类的定义和实例化 定义 定义类需要用到class关键字 &#xff08;大驼峰定义&#xff09;for example:class Dog... 初步了解一下…

2024年5月16日 十二生肖 今日运势

小运播报&#xff1a;2024年5月16日&#xff0c;星期四&#xff0c;农历四月初九 &#xff08;甲辰年己巳月庚辰日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;猴、鼠、鸡 需要注意&#xff1a;牛、兔、狗 喜神方位&#xff1a;西北方 财神方位&#xff1a;…

【2024年电工杯数学建模竞赛】选题分析+A题B题完整思路+代码分享

.2024年电工杯数学建模AB题选题思路 比赛开始第一时间在下面的资料裙分享&#xff1a; 点击链接加入群聊【2024数维杯数学建模ABC题资料汇总】&#xff1a;http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kBwulH5tSN2X7iLXzZHAJqRk9sYnegd0y&authKey2TSsuOgqXZQ%2FvTX4R59…

ADS使用记录之使用RFPro进行版图联合仿真-加入集总元器件

ADS使用记录之使用RFPro进行版图联合仿真-加入集总元器件 ADS使用记录之使用RFPro进行版图联合仿真中已经简单介绍了使用RFPro对版图就行仿真的方法。但是&#xff0c;如果版图中含有一些非微带的结构&#xff0c;比如说电感、电容、晶体管呢&#xff0c;在此举例解释一下。 …

什么可以替代iframe?

网页嵌套中&#xff0c;iframe曾几何时不可一世&#xff0c;没有其他更好的选择&#xff01; iframe即内联框架&#xff0c;作为网页设计中的一种技术&#xff0c;允许在一个网页内部嵌套另一个独立的HTML文档。尽管它在某些场景下提供了便利&#xff0c;但也存在多方面的缺陷…

【Python报错】Python安装模块时报错Fatal error in launcher

【Python报错】Python安装模块时报错Fatal error in launcher 最近需要用到python下载一个小工具&#xff0c;自信敲下回车键本想看到黑乎乎的终端上会出现快速跳跃的命令代码&#xff0c;没想到&#xff0c;报错了...... Fatal error in launcher: Unable to create process …

全网最全的基于电机控制的38类simulink仿真全家桶----新手大礼包

整理了基于电机的38种simulink仿真全家桶&#xff0c;包含多种资料&#xff0c;类型齐全十分适合新手学习使用。包括但是不局限于以下&#xff1a; 1、基于多电平逆变器的无刷直流电机驱动simulink仿真 2、基于负载转矩的感应电机速度控制simulink仿真 3、基于滑膜观测器的永…