java中格式化数字、jsp中格式化数据、<input>标签

11 篇文章 0 订阅

今天用到了又闲来无事,就把这个格式化总结一下,也和大家分享一下

主要使用的类:java.text.DecimalFormat 

1。实例化对象,可以用如下两种方法: 
      DecimalFormat df=(DecimalFormat)NumberFormat.getInstance(); 
      DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance(); 
     因为DecimalFormat继承自NumberFormat。 
2。设定小数位数 
系统默认小数位数为3,如: 
    DecimalFormat df=(DecimalFormat)NumberFormat.getInstance(); 
    System.out.println(df.format(12.3456789)); 
输出:12.346 
现在可以通过如下方法把小数为设为两位: 
  df.setMaximumFractionDigits(2); 
    System.out.println(df.format(12.3456789)); 
则输出为:12.35 
3。将数字转化为百分比输出,有如下两种方法: 
(1) 
  df.applyPattern("##.##%"); 
    System.out.println(df.format(12.3456789)); 
    System.out.println(df.format(1)); 
    System.out.println(df.format(0.015)); 
输出分别为:1234.57%    100%      1.5% 
(2) 
    df.setMaximumFractionDigits(2); 
    System.out.println(df.format(12.3456789*100)+"%"); 
    System.out.println(df.format(1*100)+"%"); 
    System.out.println(df.format(0.015*100)+"%"); 
输出分别为: 
1,234.57%     100%     1.5% 
4。设置分组大小 
     DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance(); 
df1.setGroupingSize(2); 
    System.out.println(df1.format(123456789)); 
输出:1,23,45,67,89 
还可以通过df1.setGroupingUsed(false);来禁用分组设置,如: 
     DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance(); 
    df1.setGroupingSize(2); 
df1.setGroupingUsed(false); 
    System.out.println(df1.format(123456789)); 
输出:123456789 
5。设置小数为必须为2位 
    DecimalFormat df2=(DecimalFormat) DecimalFormat.getInstance(); 
  df2.applyPattern("0.00"); 
    System.out.println(df2.format(1.2)); 

输出:1.20 



因为我是数据是解密出来的,是字符串,所以在用的时候出现了 Cannot format given Object as a Number 错误,也就是“不能将给定的对象格式化为一个数字”。其实说来简单,毕竟String的范围大,数字的范围小(说成是范围可能不是那么规范,但是个人感觉最贴切。)是不能从大的范围转换成小的范围的。接下来我的操作是(附带了其他的一些总结):

String   s   =    "123.456 " ;   //要确保字符串为一个数值,否则会出异常
double    d   =   Double.parseDouble(s); 
float    f   =   Float.parseFloat(s);
int i = Integer.parseInt([String]);//[String]待转换的字符串

这样先把要字符串转成数字再格式化就一切OK啦!



其实我觉得在后台操作有点麻烦,就也在前台进行了格式化操作。(但是我的项目有些是必须要在后台操作的,上面的也是迫于无奈!哈哈)

下面是在jsp中实现的数据格式化

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 

jstl fmt 函数大全 

主要功能格式化 

日期格式(2008年5月5日22点00分23秒) 

<fmt:formatDate value="<%=new Date() %>" pattern="yyyy年MM月dd日HH点mm分ss秒" /> 

保留两位小数 

<fmt:formatNumber value="123.123456789" pattern="0.00"/> 

格式数字(45,678.234) 

<fmt:formatNumber type="number" value="45678.2345" /> 

格式百分比(23%) 
<fmt:formatNumber type="percent" value="0.2345" /> 
<fmt:formatNumber  value="${item.DD_NUM/item.TOL_NUM}" type="number" pattern="0.00%" />  


由于的数据是后台查出来之后显示在input标签里的,所以在引用标签的时候 在input标签的value=""中是这么写的:

value="<fmt:formatNumber value='${goods.price}' pattern='0.00'/>"

顺带着记录一下  input标签里面的信息不能被选中复制修改等 可以使用οncοpy="return false;" oncut="return false;"  required="true" readonly="readonly"属性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java程序源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值