第二百零九节 Java格式 - Java数字格式类
Java格式 - Java数字格式类
以下两个类可用于格式化和解析数字:
- java.text.NumberFormat
- java.text.DecimalFormat
NumberFormat 类可以格式化一个数字特定地区的预定义格式。
DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。
NumberFormat类的 getXXXInstance()方法返回格式化程序对象的实例。
XXX可以由数字,货币,整数或百分比替换,或只是getInstance()。这些方法都是重载的。
如果你调用它们没有参数,它们返回一个格式化对象默认语言环境。
使用number参数调用format()方法以将格式化的数字作为字符串。
import java.text.NumberFormat;public class Main {public static void main(String[] args) {NumberFormat formatter;// Get number formatter for default localeformatter = NumberFormat.getInstance();System.out.println(formatter.format(12312.123123));}
}
上面的代码生成以下结果。
![]()
例子
下面的代码说明了如何以默认格式为当前语言环境,法语语言环境和德语语言环境格式化数字。
import java.text.NumberFormat;
import java.util.Locale;public class Main {public static void main(String[] args) {double value = 123456789.9876543;// Default localeprintFormatted(Locale.getDefault(), value);// Indian localeLocale indianLocale = new Locale("en", "IN");printFormatted(indianLocale, value);}public static void printFormatted(Locale locale, double value) {// Get number and currency formatterNumberFormat nf = NumberFormat.getInstance(locale);NumberFormat cf = NumberFormat.getCurrencyInstance(locale);System.out.println("Format value: " + value + " for locale: " + locale);System.out.println("Number: " + nf.format(value));System.out.println("Currency: " + cf.format(value));}
}
上面的代码生成以下结果。

DecimalFormat类
要执行更高级的格式化,我们可以使用DecimalFormat类。
DecimalFormat类允许我们提供我们自己的格式模式。 的下表显示模式及其用法。
| 符号 | 位置 | 含义 |
|---|---|---|
0 | Number | 代表数字 |
# | Number | 数字,零显示为不存在 |
. | Number | 小数分隔符或货币小数分隔符 |
- | Number | 减号 |
, | Number | 分组分隔符 |
E | Number | 以科学记数法分隔尾数和指数。 |
; | 子模式边界 | 分隔正和负子模式 |
% | 字首或字尾 | 乘以100并以百分比显示 |
\u2030 | 字首或字尾 | 乘以1000,并显示为每毫米值 |
一旦我们创建了DecimalFormat类的对象,就可以改变格式模式使用其 applyPattern()方法。
import java.text.DecimalFormat;public class Main {private static DecimalFormat formatter = new DecimalFormat();public static void main(String[] args) {formatNumber("##.##", 12.345);formatNumber("##.##", 12.345);formatNumber("0000.0000", 12.345);formatNumber("#.##", -12.345);// Positive and negative number format formatNumber("#.##;(#.##)", -12.735);}public static void formatNumber(String pattern, double value) {// Apply the pattern formatter.applyPattern ( pattern );String formattedNumber = formatter.format(value);System.out.println("Number:" + value + ", Pattern:" + pattern+ ", Formatted Number:" + formattedNumber);}
}
上面的代码生成以下结果。

解析
我们还可以使用 parse()方法将字符串解析为数字。 parse()方法返回 java.lang.Number 类的对象。
我们可以使用 java.lang.Number 类中的xxxValue()方法来获取原始值,其中xxx可以是byte,double,float,int,long和short。
import java.text.DecimalFormat;
import java.text.ParsePosition;public class Main {private static DecimalFormat formatter = new DecimalFormat();public static void main(String[] args) {// Parse a string to decimal numberString str = "qq1,234.567";String pattern = "#,###.###";formatter.applyPattern(pattern);// Create a ParsePosition object to specify the first digit of// number in the string. It is 1 in "qq1,234.567"// with the index 2.ParsePosition pp = new ParsePosition(2);Number numberObject = formatter.parse(str, pp);double value = numberObject.doubleValue();System.out.println("Parsed Value is " + value);}}
上面的代码生成以下结果。
![]()
以上
相关文章:
第二百零九节 Java格式 - Java数字格式类
Java格式 - Java数字格式类 以下两个类可用于格式化和解析数字: java.text.NumberFormatjava.text.DecimalFormat NumberFormat 类可以格式化一个数字特定地区的预定义格式。 DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。 NumberFormat类的 getXXXInstance…...
LSI-9361阵列卡笔记
背景 要将raid0更改为JBOD直通模式 注意的点是要先将raid模式调整为JBOD之后重启机器,即可 备注:转换过程中硬盘中的数据未丢失。 步骤贴图 refer https://zhiliao.h3c.com/questions/dispcont/123250 https://blog.csdn.net/GreapFruit_J/article/…...
ArcGIS热点分析 (Getis-Ord Gi*)——基于地级市尺度的七普人口普查数据的热点与冷点分析
先了解什么是热点分析 ? 热点分析 (Getis-Ord Gi*) 是一种用于空间数据分析的技术,主要用于识别地理空间数据中值的聚集模式,可以帮助我们理解哪些区域存在高值或低值的聚集,这些聚集通常被称为“热点”或“冷点”,Gi* 统计量为…...
ASIACRYPT 2021
分类文章编号获奖论文1-3后量子密码4-9多方计算10-15物理攻击,泄露和对策16-21理论22-27公钥密码和鉴权密钥交换28-33高级加密和签名34-39对称密钥构建40-46量子安全47-53获奖论文54对称密码分析55-66增强型公钥加密和时间锁难题67-72同态加密和加密搜索73-77NIZK和SNARK78-80…...
C#学习之路day1
目录 一、概念:.net和c# 二、.net发展方向 三、.Net两种交互模式 四、创建项目 五、vs的组成部分 六、我的第一个C#程序 七、多个项目时启动项目的设置 八、注释 九、快捷键 一、概念:.net和c# 1、.net/dotnet :一般指.Net Framework框架&#…...
【安当产品应用案例100集】010-基于国密UKEY的信封加密应用案例
安当有个客户开发了一套C/S架构的软件,Server在云端,Client由不同的用户使用。最初软件设计开发的时候,没有考虑数据安全形势日渐严峻的问题,Server端和Client端直接就建立一个socket连接来进行通信,Server端发出去的数…...
扫码点餐系统小程序功能分析
扫码点餐系统小程序通常具备以下核心功能: 用户界面:提供直观易用的界面,方便用户浏览菜单、选择菜品、查看订单状态等 。菜单展示:展示餐厅的菜单,包括菜品图片、价格、描述等信息 。扫码点餐:用户通过…...
网络安全——基础知识记忆梳理
1. SQL注入攻击 SQL注入攻击是一种常见的网络安全威胁,它利用Web应用程序中对用户输入的数据的不正确处理,攻击者可以在SQL查询中注入恶意代码,从而执行非授权的数据库操作。这种攻击方式可以导致数据泄漏、数据篡改、绕过认证等多种安全问题…...
GitHub开源的轻量级文件服务器,可docker一键部署
文件服务器 介绍安装使用命令使用API调用 介绍 项目github官网地址 Dufs是一款由Rust编写的轻量级文件服务器,不仅支持静态文件服务,还能轻松上传、下载、搜索文件,甚至支持WebDAV,让我们通过Web方式远程管理文件变得轻而易举。…...
Scratch编程深度探索:解锁递归与分治算法的奥秘
标题:Scratch编程深度探索:解锁递归与分治算法的奥秘 在编程的世界里,递归和分治算法以其精妙的逻辑结构和解决问题的能力而著称。Scratch,这款专为儿童和初学者设计的图形化编程工具,是否能够支持实现这样复杂的逻辑…...
使用docker compose一键部署 Portainer
使用docker compose一键部署 Portainer Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 1、创建安装目录 mkdir /data/partainer/ -p && cd /data/partainer2、创建docker…...
js原生模板引擎
在JavaScript中,可以使用模板字符串(template strings)来创建简单的模板。模板字符串是用反引号(`)标识的字符串,其中内嵌表达式使用${}格式。 下面是一个简单的模板函数示例,它接受一个对象作为参数,并使用模板字符串来生成一个HTML字符串。 function createTemplat…...
Java面试题———MySql篇③
目录 1.查询语句执行流程 2.索引的数据结构是什么 3.数据库中的锁有哪些 4.MySQL日志类型 5.MySQL主从复制的流程 6.谈谈你对sql的优化的经验 1.查询语句执行流程 一条查询语句到达MySQL数据库之后,数据库中的各个组件会按照顺序执行自己的任务 首先是连接器…...
ArcGis在线地图插件Maponline(好用版)
ArcGis加载插件,可在线浏览谷歌地图、天地图、高德地图、必应地图等多种,包含街道、影像、标注地图等信息(谷歌地图需自备上网手段),免费注册账号即可使用,可加载无水印底图。 与大地2000坐标无需配准直接使…...
Chainlit接入DifyAI知识库接口快速实现自定义用户聊天界面
前言 由于dify只提供了一个分享用的网页应用,网页访问地址没法自定义,虽然可以接入NextWeb/ChatGPT web/open webui等开源应用。但是如果我们想直接给客户应用,还需要客户去设置配置,里面还有很多我们不想展示给客户的东西怎么办…...
《Python编程:从入门到实践》笔记(一)
一、字符串 1.修改字符串大小写 title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写,其他的改为小写。 upper()将字母都改为大写,lower()将字母都改为小写。 2.合并(拼接)字符串 Python使用加号()来合并字符串。这种合…...
Linux入门——06 基础IO
1.什么是当前路径 exe -> /home/lin/Desktop/Linux_learn/fork_learn/test 当前进程执行是磁盘路径下的哪一个程序 cwd -> /home/lin/Desktop/Linux_learn/fork_learn 当前进程的工作目录------》当前进程 1.1当前路径这个地址能改吗? 可以,使…...
未来城市的科技展望
未来城市,将是科技与人文深度融合的产物,展现出一个全方位智能化、绿色生态且可持续发展的全新面貌。随着物联网、人工智能等技术的飞速发展,未来城市的轮廓逐渐清晰,它将为我们带来前所未有的生活体验。 在未来…...
DevOps安全性的重要性体现在哪?
DevOps的安全性,也称为DevSecOps,是DevOps领域中的一个重要方面,它强调将安全实践集成到DevOps流程中,以提高代码发布的质量和速度,并降低安全漏洞的风险。 DevOps安全性的重要性: 提高代码质量和速度&…...
【tip】数量级大小
大于1 量级英文名称中文名称yotta尧zetta泽exa艾peta拍tera太giga吉mega兆kilo千hecto百deca十 小于1 量级英文名称中文名称deci分centi厘milli毫micro微nano纳pico皮femto飞atto阿zepto仄yocto幺...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
