当前位置: 首页 > 编程笔记 >

java中DecimalFormat四舍五入用法详解

陶成济
2023-03-14
本文向大家介绍java中DecimalFormat四舍五入用法详解,包括了java中DecimalFormat四舍五入用法详解的使用技巧和注意事项,需要的朋友参考一下

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

下边先介绍下DecimalFormat的用法:

import java.text.*; 
import java.util.*; 
 
public class DecimalFormatDemo { 
 public static void main(String args[]) { 
   DecimalFormat df1 = new DecimalFormat("###,###.0000");//使用系统默认的格式 
   System.out.println(df1.format(111111123456.12)); 
 
   Locale.setDefault(Locale.US); 
   DecimalFormat df2= new DecimalFormat("###,###.0000");//使用美国的格式 
   System.out.println(df2.format(111111123456.12)); 
 
//----------------------------also use applypattern------------------------------// 
 
   DecimalFormat df3= new DecimalFormat(); 
   myformat3.applyPattern("##,###.000"); 
   System.out.println(df3.format(11112345.12345)); 
//-----------------控制指数输出-------------------------------------------------// 
 
   DecimalFormat df4= new DecimalFormat(); 
   myformat4.applyPattern("0.000E0000"); 
   System.out.println(df4.format(10000)); 
   System.out.println(df4.format(12345678.345)); 
//------------------百分数的输出-------------------------------------------// 
 
   DecimalFormat df5= null; 
   try{ 
     df5= (DecimalFormat)NumberFormat.getPercentInstance(); 
   }catch(ClassCastException e){ 
   <span style="white-space:pre"> </span> System.err.println(e); 
   } 
   df5.applyPattern("00.0000%"); 
   System.out.println(df5.format(0.34567)); 
   System.out.println(df5.format(1.34567));    
 } 
} 

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

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

0 一个数字

# 一个数字,不包括 0

. 小数的分隔符的占位符

, 分组分隔符的占位符

; 分隔格式。

- 缺省负数前缀。

% 乘以 100 和作为百分比显示

? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代 替十进制分隔符。

X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

例如:

DecimalFormat df1 = new DecimalFormat("###0.00") ; //保留两位小数,如果不足两位小数则自动补零 
System.out.println(df1.format(124.367)); 
System.out.println(df1.format(124.3)); 
     
DecimalFormat df2 = new DecimalFormat("###0.##") ; //保留两位小数,不足两位则不补零 
System.out.println(df2.format(124.6)); 
System.out.println(df2.format(124)); 
     
DecimalFormat df3 = new DecimalFormat("000.000"); //保留三位小数,哪里不足位则补零 
System.out.println(df3.format(24)); 
     
DecimalFormat df = new DecimalFormat("0.000E0000"); //指数 
System.out.println(df.format(1234.56)); 
     
DecimalFormat nf = (DecimalFormat)NumberFormat.getPercentInstance(); //百分数 
System.out.println(nf.format(0.476354)); 
nf.applyPattern("00.00%") ; 
System.out.println(nf.format(0.476354)); 

运行结果:

124.37 
124.30 
124.6 
124 
024.000 
1.235E0003 
48% 
47.64% 

(2)对于读取并解析包含格式化的数字的字符串?解析支持包含在NumberFormat中。例如:

import java.util.Locale; 
import java.text.NumberFormat; 
import java.text.ParseException; 
public class DecimalFormat5 { 
public static void main(String args[]) { 
  // 本地格式 
  NumberFormat nf1 = NumberFormat.getInstance(); 
  Object obj1 = null; 
  // 基于格式的解析 
  try { 
   obj1 = nf1.parse("1234,56"); 
  } 
  catch (ParseException e1) { 
   System.err.println(e1); 
  } 
  System.out.println(obj1); 
  // 德国格式 
  NumberFormat nf2 =NumberFormat.getInstance(Locale.GERMAN); 
  Object obj2 = null; 
  // 基于格式的解析 
  try { 
    obj2 = nf2.parse("1234,56"); 
  } 
  catch (ParseException e2) { 
    System.err.println(e2); 
  } 
  System.out.println(obj2); 
  } 
} 

运行结果:

123456  //美国运行;被认为字符串 
1234.56 //德国运行;被认为一个小数 

(3)对于DecimalFormat和NumberFormat:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍javascript中toFixed()四舍五入使用方法详解,包括了javascript中toFixed()四舍五入使用方法详解的使用技巧和注意事项,需要的朋友参考一下 最近做的项目涉及到金额的计算,有一种方式就是进行四舍五入的规则进行小数点后面的尾数处理,以前一直以为toFixed方法就是四舍五入的,知道一个用户反馈了金额计算的bug我才如梦初醒(亏了一毛钱),才仔细深究了下toF

  • 问题内容: 让我们看一下下面的Java语句。 在上述陈述中,除以下情况外,所有其他情况都是显而易见的。 它应该返回但它返回。怎么样? 问题答案: 这是故意行为。从文档中: 四舍五入 DecimalFormat使用半个二进位舍入(请参阅ROUND_HALF_EVEN)进行格式化。 关于ROUND_HALF_EVEN: 舍入模式向“最近的邻居”舍入,除非两个邻居都等距,在这种情况下,向偶数邻居舍入。如

  • 问题内容: 因此,我有一些代码可以通过将“理想”屏幕的大小除以用户屏幕的大小来将图形缩放到用户屏幕的大小。她是我在做什么的代码片段: 现在,如果我在计算机上(屏幕分辨率为1440x900的Mac Book pro)运行此程序,结果是“ scaleFactorWidth”设置为2.0,而“ scaleFactorHeight”设置为2.0,这是预期的,因为我的屏幕正好是一半目标的大小。但是,如果在具

  • 本节讨论了精度数学的四舍五入特性,ROUND()函数,以及插入DECIMAL列时的四舍五入特性。 ROUND()函数的行为取决于其参量是准确的还是近似的: ·对于准确值数值,ROUND()采用“半值向上舍入”规则:如果小数部分的值为.5或更大,如果是正数,向上取下一个整数,如果是负数,向下取下一个整数(换句话讲,以0为界限执行舍入)。如果小数部分的值小于.5,如果是正数,向下取下一个整数,如果是负

  • 问题内容: 这是小代码来说明我所看到的 打印: 我要打印 我需要做什么? 问题答案: 在使用之前添加以下行: 查看其他舍入模式,看看哪种最适合您。 注意:此方法仅在JDK 1.6或更高版本中有效

  • 问题内容: 我怎么总是将a舍入为一个,而不舍入它。我知道,但是我希望它总是四舍五入。因此,如果为,则四舍五入为4。 问题答案: 您可以使用方法。 请参阅JavaDoc链接:https ://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#ceil(double ) 从文档: 细胞 返回大于或等于自变量且等于数学整数的最小(最接近负无穷大