如何将 2.5 变成 2.50 ?我查了一下jdk文档, 好像是使用BigDeciaml 这个类, 但是具体的没看懂。哪位知道的请帮忙回复一下,希望可以讲得详细一些, 谢谢!
解决方案 »
- 用JAVA如何将XML文件中的一个值存入String对象??
- 解释程序代码
- 小妹我是初学者,有个问题一直困扰我,希望各位大侠帮帮我!!
- for循环中的内容,使用Timer/TimerTask,定时逐条执行的问题!!!!!!!!!!
- 怎么样随机读取一个unicode文件或是,在一个普通的中英文 混合文件中,以空格为界随机读取。。。
- java新手提问,路径问题。
- 关于jni?(在线等待)
- 如何在JB6的工程里加入别人编译好的一个类?
- 关于用java开发三层结构的问题
- 如何连接postgresql?新手问题
- 关于toString()的问题
- 如何将表示多维数组的String分割为由单独数组元素组成的String数组?
不只是打印。 我就是想知道如果通过jdk中的自带的类将2.5变成2.50. 谢谢!
BigDecimal b = new BigDecimal(2.5);
b =b.setScale(2);
多余的0一样会被自动略去
所以,不知道楼主这样做是为了什么用处
打印出来0不会被略去
System.out.println(b);
输出:2.50
看下BigDecimal的toString方法
String s= String.format("%.2f", 2.5);
System.out.println(s);
谢谢! 这个问题我明白了, 但是我现在又有另一个问题:
double d1 = 0.05;
System.out.println( "d1=" + d1 );
double d2 = 0.005;
System.out.println( "d2=" + d2 );
double d3 = 0.0005;
System.out.println( "d3=" + d3 );执行结果如下:
d1=0.05
d2=0.0050
d3=5.0E-4谁能解释一下这段代码的执行结果?还有就是如果我现在想把0.0050 转换成 0.005, 我应该怎么做?谢谢大家!!
System.out.println();String mybb = String.format("%.3f",0.005000);
System.out.println( mybb );
please 给分
调用了Double类的toString()方法toString
public static String toString(double d)返回 double 参数的字符串表示形式。下面提到的所有字符都是 ASCII 字符。
如果参数为 NaN,则结果是字符串 "NaN"。
否则,结果是表示参数的符号和大小(绝对值)的字符串。如果符号为负,则结果的第一个字符是 '-' ('\u002D');如果符号为正,则结果中不显示符号字符。至于大小值 m:
如果 m 为无穷大,则用字符 "Infinity" 表示它;因此,正无穷大产生的结果就是 "Infinity",而负无穷大产生的结果是 "-Infinity"。
如果 m 为零,则用字符 "0.0" 表示它;因此,负零产生的结果是 "-0.0",而正零产生的结果是 "0.0"。
如果 m 大于或者等于 10-3,但小于 107,则采用不带前导零的十进制形式,用 m 的整数部分表示它,后面跟着 '.' ('\u002E'),再后面是表示 m 的小数部分的一个或多个十进制位数。
如果 m 小于 10-3 或者大于或等于 107,则用所谓的“计算机科学记数法”表示它。让 n 成为满足 10n <= m < 10n+1 的惟一整数;然后让 a 成为 m 的精确算术商数值,并用 10n 这种形式表示它,因此,1 <= a < 10。然后,用 a 的整数部分表示大小值,它的表示形式为:一个十进制位数,后面跟着 '.' ('_apos;),接着是表示 a 的小数部分的十进制位数,再后面是字母 'E' ('-pos;),最后是用十进制整数形式表示的 n,这与通过方法 Integer.toString(int) 产生的结果非常相似。
必须为 m 或 a 的小数部分显示多少位呢?至少必须有一位数来表示小数部分,除此之外,需要很多(但只能和需要的一样多)位数来惟一地区别参数值和 double 类型的邻近值。换句话说,假设 x 是用十进制表示法表示的精确算术值,是通过用于有限非零参数 d 的方法生成的。那么 d 必须是最接近 x 的 double 值;如果两个 double 值都同样接近 x,那么 d 必须是其中之一,并且 d 的最低有效位必须是 0。 再读了这个你就清楚了