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 ) 从文档: 细胞 返回大于或等于自变量且等于数学整数的最小(最接近负无穷大