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

一、代码和调试结果

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
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】Qt开源项目

1、Flameshot 截图工具 1.1 简介 Flameshot是一款功能强大但易于使用的屏幕截图软件,中文名称火焰截图。 Flameshot 简单易用并有一个CLI版本,所以可以从命令行来进行截图。 Flameshot 是一个Linux发行版中完全免费且开源的截图工具 1.2 源码 github:https://github.com…

申请一个开发者域名

申请一个开发者域名 教程 fourm.js.org 因本地没安装 hexo 环境&#xff0c;模板下载的 html

代理IP与网络隐私

随着科技的发展&#xff0c;越来越多的人开始享受网络的便利&#xff0c;人们逐步在社交媒体上分享自己的生活。这些公开信息是可以被所有人浏览观看的&#xff0c;但是也会存在部分隐私信息我们并不想要被人知晓&#xff0c;这就牵扯到网络隐私保护问题。 代理IP对于网络隐私保…

char x[]---char*---string---sizeof

字符串数组 #include <iostream>int main(){char c_str[]"abcd";char c_str1[]{a,b,c,d};std::cout<<sizeof(c_str)<<std::endl;std::cout<<sizeof(c_str1)<<std::endl;return 0; } char*存储的字符串个数 char*字符串所占字节大小 c…

Shell之高效文本处理命令

目录 一、排序命令—sort 基本语法 常用选项 二、去重命令—uniq 基本语法 常用选项 三、替换命令—tr 基本语法&#xff1a; 常用选项 四、裁剪命令—cut 基本语法&#xff1a; 常用选项 字符串分片 五、拆分命令—split 基本语法&#xff1a; 六、 文件…

【if条件、for循环、数据框连接、表达矩阵画箱线图】

编程能力&#xff0c;就是解决问题的能力&#xff0c;也是变优秀的能力 From 生物技能树 R语言基础第七节 文章目录 1.长脚本管理方式if(F){....}分成多个脚本&#xff0c;每个脚本最后保存Rdata&#xff0c;下一个脚本开头清空再加载 2.实战项目的组织方式方法&#xff08;一&…

【微服务最全详解】

文章目录 微服务微服务的介绍微服务服务架构演变 微服务网关微服务的负载均衡微服务的容灾机制服务崩溃服务容灾机制微服务熔断机制微服务限流Sentinel怎么实现限流微服务限流算法1.令牌桶算法2.漏斗桶算法 服务监控日志收集 微服务 微服务的介绍 微服务是一种软件架构风格&a…

上班族兼职新篇章:10大实战攻略,轻松年赚1-20万

对于众多上班族而言&#xff0c;如何在工作之余赚取额外收入&#xff0c;开启自己的第一份副业&#xff0c;已成为许多人心中的疑问。每个人的才能和兴趣点不尽相同&#xff0c;但都有机会找到适合自己的兼职方式。接下来&#xff0c;就让我们一起探索这10大实战攻略&#xff0…

Google Ads谷歌广告账户被封停怎么办?

跨境出海业务少不了需要做Google Ads推广业务&#xff1b;其中让投手们闻风丧胆的消息就是帐户被暂停。当 Google 检测到任何违反其政策且可能损害用户在线体验的行为时&#xff0c;就会发生这种情况。那么如何在做广告推广的同时&#xff0c;保证账号不被封禁呢&#xff1f;看…

基于单片机的智能安防系统设计(32+4G+WIFI版)-设计说明书

设计摘要&#xff1a; 本设计基于STM32单片机&#xff0c;旨在实现一个智能安防系统&#xff0c;主要包括烟雾和温度传感器、人体红外传感器、显示屏、按键、4G模块和WiFi模块等组件。通过这些组件的协作&#xff0c;实现了火灾检测、入侵监测、状态显示、用户交互和远程通信等…

AI高清逼真换脸换装

在我们的最新AI换脸换装技术中&#xff0c;我们将高度真实的视觉效果与创新的人工智能技术相结合&#xff0c;提供了前所未有的个性化数字体验。无论是为了娱乐、广告、电影制作还是个人化虚拟体验&#xff0c;我们的技术都能让你的想象无缝转换为现实。通过我们的平台&#xf…

Linux命令使用

一、ls tree clear 1.1 ls ls&#xff1a;查看当前目录下的文件名ls 目录名&#xff1a;查看指定目录下的文件名ls /&#xff1a;查看根目录下的文件名ls -a&#xff1a;查看当前目录下的所有文件名&#xff0c;包括隐藏文件ls -l&#xff1a;查看当前目录下文件的详细信息…

Blender雕刻建模_笔刷纹理和顶点绘制

笔刷纹理 主要用于皮肤&#xff0c;纹理的雕刻。 可以修改映射方式来实现不同绘制效果。 用一张纹理来定义笔刷各个点的强度。其中白色为1&#xff0c;黑色为0。 设置笔刷纹理步骤&#xff1a; -新建一套笔刷 -强度&#xff0c;设为0.15&#xff08;可以根据需求修改&#x…

数据结构与算法笔记(一)---时间复杂度与空间复杂度

前言 以自述式的笔记展示&#xff0c;尽可能用最好理解的方式去叙述我对知识点的理解&#xff0c;方便有需求的小伙伴查看理解&#xff0c;同时锻炼自身的表达能力&#xff0c;共同学习&#xff0c;共同进步&#xff0c;争取“双赢”&#xff01; 注&#xff1a;本文章根据自…

Java面试八股之WeakHashMap的工作原理

简述WeakHashMap的工作原理 弱键&#xff08;Weak Keys&#xff09;&#xff1a; WeakHashMap 的键&#xff08;keys&#xff09;是通过 WeakReference 弱引用进行封装的。弱引用是一种特殊的引用类型&#xff0c;它不会阻止所引用的对象被垃圾收集器回收。这意味着&#xff…

机器人操作系统ROS2学习—控制小海龟运动

将Ubuntu系统和ROS2安装完成后&#xff0c;就可以进行调用小海龟运动了。 一、打开Ubuntu系统后&#xff0c;调用终端窗口。有3 种方法可以打开启动终端: 1、通过快捷键CtrAItT; 2、桌面左下角有个显示应用的菜单&#xff0c;点击后找到终端“Terminal”图标&#xff0c;打…

kubernetes二进制多master部署

文章目录 一、master02 节点部署&#xff08;在上期博客部署完成的情况下&#xff09;1、准备master02节点需要的文件2、修改配置文件kube-apiserver中的IP3、启动各服务并设置开机自启4、查看node节点状态 二、负载均衡部署1、配置load balancer集群双机热备负载均衡1.1 准备n…

英飞凌SiC模块为小米电动车提供动力

至2027年之际&#xff0c;SiC功率模块与裸片产品将荣耀登场&#xff0c;助力小米电动汽车新品SU7璀璨问世。英飞凌&#xff0c;这家业界翘楚&#xff0c;将倾其所能&#xff0c;为小米SU7 Max提供两颗HybridPACK Drive G2 CoolSiC 1200 V模块&#xff0c;如同给电动汽车的心脏注…

万字长文破解 AI 图片生成算法-Stable diffusion (第一篇)

想象一下&#xff1a;你闭上眼睛&#xff0c;脑海中构思一个场景&#xff0c;用简短的语言描述出来&#xff0c;然后“啪”的一声&#xff0c;一张栩栩如生的图片就出现在你眼前。这不再是科幻小说里才有的情节&#xff0c;而是Stable Diffusion——一种前沿的AI图片生成算法—…

OpenHarmony 实战开发——ArkUI容器类API介绍

容器类&#xff0c;顾名思义就是存储的类&#xff0c;用于存储各种数据类型的元素&#xff0c;并具备一系列处理数据元素的方法。在 ArkUI 开发框架中&#xff0c;容器类采用了类似静态的语言来实现&#xff0c;并通过 NAPI 框架对外提供。通过对存储位置以及属性的限制&#x…