java中关于DecimalFormat四舍五入的用法

cmu15445(2024fall) project 2 project 2比p1难度要更大,代码量更大且涉及的知识更多,实现中出现的bug更多,好在是最后全部解决了。我最大的收获在于对于多线程编程的理解更深入了,实际发现解决了多个多线程相关的bug,学会了更多多线程下debug的技巧方法,也见识了更多多线程的bug情况。在之后可以更系统的学习一下多线程编程。同时学会实现B+树也是需要掌握的基础。 阅读详情

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。它可以支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)这些内容的本地化。

下边先介绍下DecimalFormat的用法:

[java]  view plain  copy
  1. import java.text.*;  
  2. import java.util.*;  
  3.   
  4. public class DecimalFormatDemo {  
  5.   public static void main(String args[]) {  
  6.      DecimalFormat df1 = new DecimalFormat("###,###.0000");//使用系统默认的格式  
  7.      System.out.println(df1.format(111111123456.12));  
  8.   
  9.      Locale.setDefault(Locale.US);  
  10.      DecimalFormat df2= new DecimalFormat("###,###.0000");//使用美国的格式  
  11.      System.out.println(df2.format(111111123456.12));  
  12.   
  13. //----------------------------also use applypattern------------------------------//  
  14.   
  15.      DecimalFormat df3= new DecimalFormat();  
  16.      myformat3.applyPattern("##,###.000");  
  17.      System.out.println(df3.format(11112345.12345));  
  18. //-----------------控制指数输出-------------------------------------------------//  
  19.   
  20.       DecimalFormat df4= new DecimalFormat();  
  21.       myformat4.applyPattern("0.000E0000");  
  22.       System.out.println(df4.format(10000));  
  23.       System.out.println(df4.format(12345678.345));  
  24. //------------------百分数的输出-------------------------------------------//  
  25.   
  26.       DecimalFormat df5= null;  
  27.       try{  
  28.          df5= (DecimalFormat)NumberFormat.getPercentInstance();  
  29.      }catch(ClassCastException e){  
  30.       <span style="white-space:pre">  </span> System.err.println(e);  
  31.      }  
  32.      df5.applyPattern("00.0000%");  
  33.      System.out.println(df5.format(0.34567));  
  34.      System.out.println(df5.format(1.34567));        
  35.  }  
  36. }  


(1)对于数据的四舍五入:

DecimalFormat 包含一组符号,对于各符号的含义解释如下:

0 一个数字
# 一个数字,不包括 0
. 小数的分隔符的占位符
, 分组分隔符的占位符
; 分隔格式。
- 缺省负数前缀。
% 乘以 100 和作为百分比显示
? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代 替十进制分隔符。
X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

例如:

[java]  view plain  copy
  1. DecimalFormat df1 = new DecimalFormat("###0.00") ;  //保留两位小数,如果不足两位小数则自动补零  
  2. System.out.println(df1.format(124.367));  
  3. System.out.println(df1.format(124.3));  
  4.           
  5. DecimalFormat df2 = new DecimalFormat("###0.##") ; //保留两位小数,不足两位则不补零  
  6. System.out.println(df2.format(124.6));  
  7. System.out.println(df2.format(124));  
  8.           
  9. DecimalFormat df3 = new DecimalFormat("000.000"); //保留三位小数,哪里不足位则补零  
  10. System.out.println(df3.format(24));  
  11.           
  12. DecimalFormat df = new DecimalFormat("0.000E0000"); //指数  
  13. System.out.println(df.format(1234.56));  
  14.           
  15. DecimalFormat nf = (DecimalFormat)NumberFormat.getPercentInstance(); //百分数  
  16. System.out.println(nf.format(0.476354));  
  17. nf.applyPattern("00.00%") ;  
  18. System.out.println(nf.format(0.476354));  

运行结果:

[java]  view plain  copy
  1. 124.37  
  2. 124.30  
  3. 124.6  
  4. 124  
  5. 024.000  
  6. 1.235E0003  
  7. 48%  
  8. 47.64%  

(2)对于读取并解析包含格式化的数字的字符串?解析支持包含在NumberFormat中。例如:
[java]  view plain  copy
  1. import java.util.Locale;  
  2. import java.text.NumberFormat;  
  3. import java.text.ParseException;  
  4. public class DecimalFormat5 {  
  5. public static void main(String args[]) {  
  6.     // 本地格式  
  7.     NumberFormat nf1 = NumberFormat.getInstance();  
  8.     Object obj1 = null;  
  9.     // 基于格式的解析  
  10.     try {  
  11.       obj1 = nf1.parse("1234,56");  
  12.     }  
  13.     catch (ParseException e1) {  
  14.       System.err.println(e1);  
  15.     }  
  16.     System.out.println(obj1);  
  17.     // 德国格式  
  18.     NumberFormat nf2 =NumberFormat.getInstance(Locale.GERMAN);  
  19.     Object obj2 = null;  
  20.     // 基于格式的解析  
  21.     try {  
  22.        obj2 = nf2.parse("1234,56");  
  23.     }  
  24.     catch (ParseException e2) {  
  25.        System.err.println(e2);  
  26.     }  
  27.     System.out.println(obj2);  
  28.     }  
  29. }  

运行结果:

[java]  view plain  copy
  1. 123456   //美国运行;被认为字符串  
  2. 1234.56 //德国运行;被认为一个小数  



(3)对于DecimalFormat和NumberFormat:

DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。

8位2路选择器设计 阅读详情

相关推荐

java 二维码生成及其标签打印

本文主要内容 二维码生成 二维码标签预览及打印 二维码生成 笔者此次的二维码是通过调用第三方接口生成的,具体流程如下: 根据规范要求调用第三方接口,返回二维码下载地址及二维码图片的属性值(图片大小等) 根据返回的值获取二维码下载地址,根据地址下载二维码图片,保存至本地磁盘及记录数据信息 扫描二维码跳转相应地址,显示资产的基本信息 最终生成的二维码如下图所示: 预览并批量打印二维码标签 先...

孙小牟的博客 4945

关于使用DecimalFormat的进行四舍五入

详细使用详见 API文档在项目经常会用到对数值的格式化操作,如:DecimalFormat decimalFormat = new DecimalFormat("0.##"); //0表示如果该位置的数值无论大于0还是等于0都要显示占位;#表示如果该位置的数值大于0显示数值,如果等于0则不显示。DecimalFormat("0.#0")这种情况下会抛异常 String result = decima

蓝色的天空的博客 9774

手把手教你用VSCode+MCUXpresso搭建i.MX RT1062开发环境(附RT-Thread Nano移植)

本文详细介绍了如何使用VSCode和MCUXpresso工具链搭建i.MX RT1062开发环境,包括工具链安装、工程配置、调试技巧以及RT-Thread Nano实时操作系统的移植方法。通过实战步骤和优化建议,帮助开发者快速掌握这款高性能Cortex-M7 MCU的开发流程,提升嵌入式开发效率。

weixin_27014595的博客 392

DecimalFormat(取舍问题,DecimalFormat四舍五入的坑)

舍入方式

ZJLOVE的博客 2859

Ollama-OCR实战:5分钟搞定PDF文档转Markdown(附qwen2.5vl模型配置)

本文详细介绍了如何利用Ollama本地部署多模态大模型qwen2.5vl,结合OCR技术,实现PDF文档到Markdown的端到端智能转换。通过解析传统OCR的局限与AI方案的优势,并提供从环境搭建、提示词工程到处理复杂表格的完整实战指南,帮助用户高效构建自动化文档处理流水线,彻底重塑文档处理工作流。

yog99的博客 607

达妙电机MIT模式调参实战:如何从‘曲线偏离’到‘完美追踪’正弦波?

本文详细解析了达妙电机MIT模式调参实战,从曲线偏离到完美追踪正弦波的方法论。通过MATLAB实时曲线分析,深入探讨位置环(kp)和速度环(kd)的双重调节技巧,帮助工程师优化参数组合,提升电机控制精度和稳定性。

weixin_29053073的博客 737

DecimalFormat 多语言、本地化指定Locale

DecimalFormat再未指定Locale会使用默认的Locale,不同的Locale会导致格式化时出现出乎预期的现象。如Locale为西班牙时,小数点符号为",“千位分隔符为”."。所以在多语言或者需要本地化的情况下,使用DecimalFormat最好指定Locale避免格式化出现异常。

yzwfeng的专栏 421

17、深入分析Freebase数据集:特征、挑战与类型系统构建

本文深入分析了Freebase数据集的特征、数据建模的挑战以及类型系统的构建方法。Freebase作为知识图谱的重要资源,以RDF三元组形式提供了丰富的结构化知识。文章重点探讨了反向三元组、中介节点(CVT节点)以及非主题三元组对链接预测任务的影响,并通过实验展示了不同类型处理策略对模型性能的作用。此外,文章详细介绍了如何构建一个显式的类型系统,以提升链接预测的准确性,并展望了未来可能的研究方向。

css33的专栏 290

(转)java DecimalFormat用法

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。 DecimalFormat 包含一个模式 和一组符号 符号含义: 0 一个数字 # 一个数字,不包括 0 . 小数的分隔符的占位符 , 分组分隔符的占位符 ; 分隔格式。 - 缺省负数前缀。 % 乘以 100 和作为百分比显示 ? 乘以 1000 和作为千进...

weixin_30872671的博客 279

【YoloV12改进策略】基于流形约束超连接(mHC)增强YoloV12全局特征提取能力_独家复现_梁文峰署名论文

论文标题:流形约束超连接 (Manifold-Constrained Hyper-Connections, mHC)核心问题:针对超连接 (Hyper-Connections, HC) 扩展残差流宽度时破坏恒等映射、引发训练不稳定性和高内存开销的问题,提出一种约束性框架。目标:恢复残差连接的稳定性与可扩展性,同时保持HC的性能增益。基准模型:基于DeepSeek-V3的MoE架构,进行了3B、9B、27B模型的实验验证。论文图示mHC 是一个通用的HC扩展框架。

m0_47867638的博客 1358

课题申报书成功率提升85%!借助大模型AI精准选题、搭综述框架及提炼创新点(附实操AI提示词)

写一份高质量的课题申报书往往面临许多困难,对很多同仁来说,难就难在:选题既要新又要能落地,文献综述要结构清晰还得有观点,研究目标要写得有逻辑还不能夸大,创新点必须得新。而且就算你有思路,也卡在怎么组织语言,怎么压缩字数上。现在我们用ChatGPT等AI工具,可以帮我们从“选题策划 → 综述撰写 → 目标拆解 → 创新提炼 → 团队结构”实现申报工作的全流程,我们要做的就是设计好提示词和收集相关资料。这篇文章将会从申报工作的六个核心模块出发,并给出参考AI提示词,帮你快速提升课题申报效率。

智能AI让学术科研更容易 909

DecimalFormat和String.format()保留小数的使用以及不同之处

通过DecimalFormat类和String.Format()方法来实现小数点位的保存,以及这两种方法的异同

wangye135的博客 1886

RN8209C单相电量计量芯片调试记录

芯片数据手册-简化版 调试功能是读取直流电池电压,出于这个需求,也就是要读取芯片的3路AD值,因为有效值是针对交流的,这点可以查看手册。 前提知道: 通信: 本次调试采用uart通信,rn8209c只有uart接口,采用9位数据(8位数据+偶校验),读寄存器只需要发送对应寄存器值就行,,波特率是4800,写的话需要保证最高为是1。没仔细读手册,这里吃了很大的亏。 复位: RN8209C支持两只复位方式,一种是发送复位命令复位,另一种是拉低复位引脚25ms以上,复位引脚复用它的串口接收(RX)口,所以拉低ST

wang 恒 的博客 6582

Java中DecimalFormat中的四舍五入的用法

在做项目的过程中遇到了一个关于金额的四舍五入的问题: 在保存一个金额的时候,前天传值到后台,然后保存到两张不同的数据库表中,但是两张表的金额差了一分钱。 前台传值:1302.625 ,     A表保存的是1302.62   B表保存的是1302.63。 拿到问题的时候首先反映过来肯定是格式化精度的问题。 A表的保存逻辑:如下图 图1是程序中decimalforma格

lyh147406的博客 2081

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java中的%nf_java中DecimalFormat四舍五入用法详解

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。它可以支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)这些内容的本地化。下边先介绍下DecimalFormat的用法:import java.text.*;import java.util.*;public c...

weixin_29290863的博客 389

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java 4舍侮辱_Java DecimalFormat四舍五入的坑及准确用法

一、DecimalFormat四舍五入的坑1.1 有时候我们在处置小数保留几位小数时,想到了DecimalFormat这个类的使用,百度搜一把可能用到以下方式。1 public static voidmain(String[] args) {2 String str="3.145";3 System.out.println(round1(str));4 }56 st...

weixin_35180432的博客 340

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java中DecimalFormat用法---Float四舍五入保留小数点后几位

import java.text.DecimalFormat; public class TestNumberFormat{   public static void main(String[]args){     double pi = 3.1415927; //圆周率     //取一位整数     System.out.println(new DecimalFormat(“0”).format(pi));   //3     //取一位整数和两位小数     System.out.println(ne

软可爱呀 763

DecimalFormat 的用法

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。DecimalFormat 包含一个模式 和一组符号,在做数字格式化时,DecimalFormat还是比较方便的。常用于保留小数点后几位、数字间用,分割、四舍五入等场合。 关键符号: 0:只要有可能就把数字拉上这个位置,不包括 0 .: 小数的分隔符的占位符 -:缺省负数前缀。 ,:分组分...

weixin_44600235的博客 5353

java DecimalFormat类

                今天去面试了,需要上机做题。题目的内容是计算一个货物订单的税费和总价格(包括税费),结果需要精确到两个小数,同时按照如下规则进行处理:       3.01 ——&gt;3.05,       2.48——&gt;2.50,       2.14——&gt;2.15。       上机的时候不能上网,没有API,但是你可以查源码。这个题目有三个用...

weixin_33834910的博客 110

DecimalFormat的使用

前言 原来没有接触过DecimalFormat,没有想到还有这玩意。使用的时候还是不错的,详细的了解可以看官方的api。找到了中文的api,小伙子们可以直接跳转啊! DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。 DecimalFormat 包含一个模式 和一组符号。差点忘记说它是干嘛的。 符号含义: 上一个经典的表格,我们来说一说响应的符号的意义...

狼魂之力 1863

【Java基础】使用NumberFormat 、DecimalFormat进行数字格式化

DecimalFormat 是 NumberFormat 的一个具体子类,`用于格式化十进制数字。包含一个模式和一组符号`。 - **主要靠 # 和 0 两种占位符号来指定数字长度**。 - `“0”`:表示一位数值,如没有,显示0。 - 如“0000.0000”,整数位或小数位>4,按实际输出,<4整数位前面补0小数位后面补0,凑足4位。 - `“#”`:表示任意位数的整数。如没有,则不显示。在小数点位使用,只表示一位小数,超出部分四舍五入。 - 如:“#”:无小数,小数部分四舍五入。“.#”:

墩墩分墩 2663

Java保留两位小数

Java保留小数,包含一些踩坑问题

公众号:Java与交易 获取更多教程 2663

java对赋值数四舍五入保留两位小数,Java中保留两位小数,并四舍五入

Java中保留两位小数,并四舍五入2015-10-26 15:47来源: 正保IT教育网整理在Java中,有的时候针对浮点数的处理时,需要保留两位小数,第一时间想到的是工具类DecimalFormat。可以使用如下方式:DecimalFormat df = new DecimalFormat("#0.00");df.format(srcNumber);其实还有一种更加简单的方式(这种方式会对指...

weixin_39777163的博客 513

Java四舍五入

Java的最佳实践是优先使用BigDecimal而不是Math.round()来对Java的数字进行四舍五入。若是正数,舍入行为类似于ROUND_UP,若为负数,舍入行为类似于ROUND_DOWN。向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。趋向0方向舍入,向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。远离零方向舍入,向绝对值最大的方向舍入,只要舍弃位非0即进位。最近数字舍入(5进),这是我们最经典的四舍五入。最近数字舍入(5舍),在这里5是要舍弃的。

strggle_bin的博客 1499

java浮点数四舍五入_Java 浮点数输出格式(四舍五入)

double四舍五入得到精确结果:double a = -12.4658;double b = -12.5658;System.out.println((int) Math.floor(a));System.out.println((int) Math.ceil(b));System.out.println(new BigDecimal(a).setScale(0, BigDecimal.ROUN...

weixin_39866874的博客 640

java 小数点取2位并且四舍五入

BigDecimal bd = new BigDecimal(0.0199999999999); System.out.println("res:"+bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); DecimalFormat df = new DecimalFormat("#...

weixin_30279751的博客 108
上一篇: Jasperreport导出pdf内容展示不完全处理
下一篇: JQuery中2个等号与3个等号的区别
ole_triangle_java
博客等级 码龄10年 82粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值