如何 StringFormat 格式控制js整数转换小数两位和小数各两位数

String.format()方法使用说明 - CSDN博客
String.format()方法使用说明
JDK1.5开始String类中提供了一个非常有用的方法String.format(String format, Object ... args)
查看源码得知其实是调用了java.util.Formatter.format(String, Object...)方法
public static String format(String format, Object ... args) {
return new Formatter().format(format, args).toString();
String.format(String format, Object ... args) 这个方法最重要的的地方就是它的第一个参数String format,我们只要掌握了这个参数的用法也就掌握了String.format的用法
首先来看一个列子
String s2 = String.format(&%1$tY-%1$tm-%1$te&, new Date());
System.out.println(s2);
这里会打印出什么内容?
先不急着去运行它,相信阅读到后面不用运行,你也会知道的.
查看JDK文档得知,String.format方法的第一个参数是有个公式可以套的
&&& %[argument_index$][flags][width][.precision]conversion
这里我们只要牢记这个公式就可以,下面说下每个颜色所代表的含义
argument_index: 可选,是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 &1$& 引用,第二个参数由 &2$& 引用,依此类推。
flags: 可选,用来控制输出格式
width: 可选,是一个正整数,表示输出的最小长度
precision:可选,用来限定输出字符数
conversion:必须,用来表示如何格式化参数的字符
先看一个简单的列子:
System.out.println(String.format(&我的名字叫%s&, &小明&)); // 打印:我的名字叫小明
这里我们只用了%s这个简单的表达式,对比上面的公式,我们发现[argument_index$][flags][width][.precision]这些部分全部都省略掉了
只留下一个必须的conversion,在这里conversion就是&s&,百分号%是固定不变的
[argument_index$]省略之后它会自动把&小明&这个值填入到%s中去
我再稍微改下列子:
String.format(&我叫%s,她叫%s&, &小明&,&小方&); // 我叫小明,她叫小方
这里会按顺序分别把小明,小方填入到对应的%s中. 如果我们要把小方填在前面,小明填在后面,那该怎么做呢,[argument_index$]就派上用场了
String.format(&我叫%2$s,她叫%1$s&, &小明&,&小方&); // 我叫小方,她叫小明
依然是百分号%开头,中间多了个2$,1$
conversion可以填s,那还有什么其它字母可以填呢,当然有的比如
o:结果被格式化为八进制整数
x:结果被格式化为十六进制
d:结果被格式化为十进制整数
System.out.println(String.format(&%o&, 8)); // 10
System.out.println(String.format(&%x&, 16)); // 10
更多的conversion类别可以参考JDK文档java.util.Formatter类
至此,我们已经了解了argument_index$和conversion的用处,接下来我们了解flag和width的用法
flag是用来控制输出格式的,比如左对齐,金额用逗号隔开等
width:表示最小宽度
先看个列子:
String.format(&%1$,d&, ); // 12,302,562
这里多出一个逗号&,&,它就是flag,用于金额千分位隔开,当然写成&%,d&也是可以的
再一个列子:
String.format(&%1$08d&, 123456);//
这里0就是flag,表示结果将用零来填充,8就是width,表示最少要8位,d是conversion
至于其它的flag可以查阅JDK文档
接下来说下[.precision]
这个单词翻译下是精度的意思,我们发现了前面有个小数点&.&,因此不难联想到这个是关于浮点数类型的
只有当传入的数据是浮点数时这个才有用,整数或者日期类型的数据都不能用
比如我想要四舍五入保留两位小数,那么我可以这么写:
String.format(&%1$.2f&, 12.12555);// 12.13
这里f表示传入的数字是浮点型,如果传入的是整数,或者把f改成d都会抛出异常,JDK文档中有明确说明
对于浮点转换 'e'、'E' 和 'f',精度是小数点分隔符后的位数。如果转换是
'g' 或 'G',那么精度是舍入计算后所得数值的所有位数。如果转换是 'a' 或 'A',则不必指定精度。
对于字符、整数和日期/时间参数类型转换,以及百分比和行分隔符转换,精度是不适用的;如果提供精度,则会抛出异常。
到现在为止这套表达式公式已经基本讲完了,这套公式是针对于基本数据类型,和字符串的,如果是正对于时间类型的数据该怎么做呢,比如格式化日期
其实文档中已经给出说明了:
用来表示日期和时间类型的格式说明符的语法如下:
%[argument_index$][flags][width]conversion
可选的 argument_index、flags 和 width 的定义同上。
所需的 conversion 是一个由两字符组成的序列。第一个字符是 't' 或 'T'。第二个字符表明所使用的格式。这些字符类似于但不完全等同于那些由 GNU
date 和 POSIX strftime(3c) 定义的字符。
需要注意的是conversion 是一个由两字符组成的序列。第一个字符是
't' 或 'T'。
也就是说用conversion的时候首先必要写一个&t&,然后在写其它conversion
时间类型有它自己的一套conversion,我们简单的选择几个来说:
年份,被格式化为必要时带前导零的四位数(至少),例如,0092 等于格里高利历的 92 CE。
月份,被格式化为必要时带前导零的两位数,即 01 - 13。
一个月中的天数,被格式化为必要时带前导零两位数,即 01 - 31
上面三个分别表示年月日
如果我要显示年份,我就可以&%tY&,显示月份我就可以写&%tm&,记得一定要带上&t&
那么本篇一开始提到的那串复杂的表达式现在看来是不是很简单呢:
String s2 = String.format(&%1$tY-%1$tm-%1$te&, new Date());
System.out.println(s2);
String.format()方法差不多讲完了,仔细看JDK文档也会慢慢了解的
需要批量进行格式化时,考虑下DateFormat,
MessageFormat,
NumberFormat 把他们封装成一个静态工具类或许更好
毕竟调用String.format()方法是会new一个Formatter对象,虽然有GC帮忙,但是平时编程的时候还是要考虑这些因素的
尽量少的创建对象,节省资源
本文已收录于以下专栏:
相关文章推荐
常规类型的格式化
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种...
JDK1.5中,String类新增了一个很有用的静态方法String.format():
format(Locale l, String format, Object... args) 使用指定的...
public class TreeNode {
private String nodeId;
private String parentId;
前言:在项目编程过程中,遇到这么一个问题。
需要将 sql语句 单独作为一个字段保存到mysql数据库中。sql在处理sql语句时会出错。
java代码String myid=&111&;
这几天刚刚接手一个功能开发,要将某企业的基本domino的用户同步到他们的另外的一个厂家的邮件系统中,最后确定用web service来实现,由邮件厂商提供web service.我方去调用以实现用户...
盖茨、乔布斯、扎克伯格等传奇人物的成功让人产生一种错觉:有一个给力的辍学生、一个车库创意、再加上一个靠谱的风投,然后你就可以大获成功。但这种事情并不常见,《华盛顿邮报》的专栏作家、杜克大学创业及科研产...
为了保密性,我将公司的简写换成了我的英文名字,其它一律没变。
1.1引言  编写目的
² 避免开发过程中出现不规范的代码,防止错误的使用框架开发引起不必要的问题。
² 解决今后产品的维护工作,使代...
String.format(&%03d&, i)主要实现如果一个数字为超过3位,则会在其前面补零以到达规定的位数,其中o是被填充到缺省位的数字,3代表规定数字的总位数  d代表是整型。
我通过java代码去获得用户的openid,一直报redirect_uri。我页面代码的链接为:
https://open./connect/oauth2/authoriz...
在面对选择国家地区,选择手机号码区号等信息的时候,常常我们是读取已存好的数据,我现在读取的就是excel里面的数据,所以在此记录下读取的方法以及注意点。
下面就是读取国际地区手机区号的数据效果图:
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)首页文字描述
专注web前端: 要么读书、要么旅行,身体和精神必须要有一个在路上。【每天一小步,成功一大步】
您的位置: >
> JS实例之保留两位小数点(格式化数字)
隐藏/显示侧边栏
JS实例之保留两位小数点(格式化数字)
格式化数字保留两位小数点实现的方法有很多,在接下来的文章中将为大家详细介绍下如何使用js来实现
a = a.toFixed(2);//保留2位但结果为一个String类型
a = parseFloat(a);//将结果转换会float
//用一步的话如下
a = parseFloat(a.toFixed(2));&
来源:,本文链接:
最新图文列表
相关文章列表
热门图文资讯java使double保留两位小数的多方法 java保留两位小数
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧
代码如下:mport java.text.DecimalF&&
DecimalFormat&&& df&& = new DecimalFormat("######0.00");&& double d1 = 3.23456& double d2 = 0.0;double d3 = 2.0;df.format(d1); df.format(d2); df.format(d3);
3个结果分别为:
代码如下:3.230.00 2.00
java保留两位小数问题:
代码如下:double&& f&& =&& 5;& BigDecimal&& b&& =&& new&& BigDecimal(f);& double&& f1&& =&& b.setScale(2,&& BigDecimal.ROUND_HALF_UP).doubleValue();&
保留两位小数&
方式二: 代码如下:java.text.DecimalFormat&& df&& =new&& java.text.DecimalFormat("#.00");& df.format(你要格式化的数字);
例: 代码如下:new java.text.DecimalFormat("#.00").format(3.1415926)
#.00 表示两位小数 #.0000四位小数 以此类推...
方式三: 代码如下:double d = 3.1415926;String result = String .format("%.2f");
%.2f %. 表示 小数点前任意位数&& 2 表示两位小数 格式后的结果为f 表示浮点型
方式四: 代码如下:NumberFormat ddf1=NumberFormat.getNumberInstance() ;void setMaximumFractionDigits(int digits)
digits 显示的数字位数 为格式化对象设定小数点后的显示的最多位,显示的最后位是舍入的
代码如下:import java.text.* ; import java.math.* ; class TT { public static void main(String args[]) { double x=23.5455; NumberFormat ddf1=NumberFormat.getNumberInstance() ;
ddf1.setMaximumFractionDigits(2); String s= ddf1.format(x) ; System.out.print(s); } }
代码如下:import java.text.*;
DecimalFormat df=new DecimalFormat(".##");double d=;String st=df.format(d);System.out.println(st);
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 php整数保留两位小数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信