java 保留小数点4位,不足时用0补足

例如:double b = 96.6;
处理后:要得到 Double b = 96.6000; 类型一定要是Double型,且结果为96.6000
Double b =96.612345,这种的我自己会,取小数点后4位,问题在于 小数点后不超过4位时,如何用0取

Double 似乎不会记住当时有多少个 scale,而 BigDecimal 就会记住。所以这个 96.6000 跟 96.6 是一样的,不能区分出来,任何计算都可能把它转换成 96.6, 所以你还想要后面跟着几个占位的0就麻烦了。

如果是用 java.math.BigDecimal 就没有这个问题,它始终能记得需要几个小数位。如果你只是需要在转换成字符串时补齐4个位就容易了。
System.out.println("Double :" + new DecimalFormat("#,##0.0000").format(new Double("96.00000")));追问

我知到可以这样,new DecimalFormat("#,##0.0000").format(new Double("96.00000"))); 返回的是String,,我最终把它转换为Double就又回到了96.6,我是传值的时候需要传一个小数点后有4位的。我要传的值是Double型,我不能给一个String啊

追答

因为 Double 不会记住保留几个小数位,只是看有尾数就保留,没有的位置就去掉,所以用 Double 做不到这点,再说了用 Double 类型本身就不是一个好主意。一般数字运算应该用 BigDecimal ,大数字用 BigInteger 等。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-08-28
DecimalFormat df=new DecimalFormat("##0.00");
String num = "34";
String strNum = df.format(Double.parseDouble(num));

得出的结果 是 strNum = 34.00 ,语言 是用的java

java 保留小数点4位,不足时用0补足
如果是用 java.math.BigDecimal 就没有这个问题,它始终能记得需要几个小数位。如果你只是需要在转换成字符串时补齐4个位就容易了。System.out.println("Double :" + new DecimalFormat("#,##0.0000").format(new Double("96.00000")));

java 自定义整数长度和小数长度,不足的用0补足
写一个转换的方法,给了两种方式,代码如下:publicstaticvoidmain(String[]args){System.out.println(doubleTrans1(3.0));}\/\/方法一publicstaticStringdoubleTrans1(doublenum){if(num%1.0==0){returnString.valueOf((long)num);}returnString.valueOf(num);}\/\/方法二publicstaticStringdoubleTrans...

JAVA编程:输出值要求格式化为:以逗号作为每千位的间隔符,并且小数点...
public static void main(String[] args){ double pi=3.1415927;\/\/圆周率 \/\/取一位整数 System.out.println(new DecimalFormat("0").format(pi));\/\/3 \/\/取一位整数和两位小数 System.out.println(new DecimalFormat("0.00").format(pi));\/\/3.14 \/\/取两位整数和三位小数,整数不足部分以0...

Java double保留4位小数
DecimalFormat df = new DecimalFormat("0.0000");System.out.println(df.format(c));System.out.println(df.format(d));

java实现数值千分位格式化且保留指定小数位且小数位不进行四舍五入
保留指定位数能进行四舍五入 public static void main(String[] args) { String str ="12312323423423.123283123";BigDecimal b = new BigDecimal(str);\/\/,代表分隔符 \/\/0.后面的##代表位数 如果换成0 效果就是位数不足0补齐 DecimalFormat d1 =new DecimalFormat("#,##0.###;(#)");System....

Java里怎么将double保留三位小数,不足的用空格填充(不出现小数点)?
DecimalFormat df = new DecimalFormat("0.000");df.format(12.3456);这个的结果是12.346,四舍五入,不足位的用0 填充,比如df.format(1.23)结果是1.230。

如何把java得出的数值,保留小数点2位四舍五入
double d = 3.1415926;String result = String.format("%.2f", d);\/\/ %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。\/\/方法四:Math.round(5.2644555 * 100) * 0.01d;\/\/String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0 ...

关于java的DecimalFormat,使用DecimalFormat("#0.###E0")时为什么保留...
DecimalFormat df1 = new DecimalFormat("#.###");System.out.println(df1.format(123.456));要想保留3位小数就这样写,你写的这个DecimalFormat df1 = new DecimalFormat("#0.###E0")是保留整数两位,小数保留3位用科学技术法表示

java String.format使用,位不足,从后面补0
DecimalFormat df=new DecimalFormat("0000");String str2=df.format(Integer.parseInt(str1));System.out.println(str2);例如:import java.text.*;class Main { public static void main(String[] args){ double d=1.23;DecimalFormat g=new DecimalFormat("0.000000");System.out.println(g....

java金额转换的问题,想要保留小数点后两位,这样会下标越界该怎么改...
BigDecimal直接设置小数并设置四舍五入的方式不就好了吗?public static void main(String[] args) {BigDecimal b0 = new BigDecimal("123");BigDecimal b1 = new BigDecimal("1234");BigDecimal b2 = new BigDecimal("12345");BigDecimal b3 = new BigDecimal("123456");BigDecimal b4 = new ...

相似回答