第二百零九节 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幺...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
