java中对浮点数精度的处理DecimalFormat

本文介绍了Java中DecimalFormat类的基本用法,包括如何使用通配符对浮点数进行格式化输出,以及通过NumberFormat处理更复杂的数字格式。还提供了一个将科学计数法转换为普通形式的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DecimalFormat是一个队浮点数进行格式化输出的利器,比如我们要输出一个保留一位小数的浮点数,可以键入如下代码:

DecimalFormat df = new DecimalFormat("0.0") //一个包括0的保留一位小数的浮点数字

float num = 0.123;

df.format(num);

上面的3行代码即可对num进行格式设置

结果会输出0.1   注:改方法会对数字进行4舍5入

下面给出通该类中的通配符:

0 一个数字

# 一个数字,不包括 0

. 小数的分隔符的占位符

, 分组分隔符的占位符

; 分隔格式。

- 缺省负数前缀。

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

? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用

国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代

替十进制分隔符。

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

上面便是具体的通配符,看不明白?好,下面是API中的一个例子

格式:"0.###E0"      输入: 1234    输出: "1.234E3"

至于其他复杂的情形,可以直接去参考API,这里不一一列举

更一般的处理数字的方法是NumberFormat,即DecimalFormat的父接口,通过调用NumberFormat的工厂方法来解析数字,比如带有科学计数法的数字解析,实例如下

float content = 123.4f;  
DecimalFormat df = new DecimalFormat("#.#E0")
NumberFormat nf = NumberFormat.getNumberInstance();
     try {
      Number number = nf.parse(df.format(cotent));
      content = number.toString();
      BigDecimal bd = new BigDecimal(content);
      content = bd.toPlainString();//JDK1.5才有 1.4用content = bd.toString();

     } catch (ParseException e) {
   
     }

  解析前的输出 1.2E2 解析后的为120。更加具体的操作可以参考 http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4

 

 

转载于:https://www.cnblogs.com/ooon/p/4428232.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值