大十进制类中的意外输出,java import java.math.BigDecimal; 导入java.util.Scanner; 公共类bigd{ 公共静态void main(字符串[]args){ 扫描仪s=新的扫描仪(System.in); int count=s.nextInt(); //获取n个输入并将它们放入数组中 字符串[]编号=新字符串[计数]; for(int i=0;i

大十进制类中的意外输出,java import java.math.BigDecimal; 导入java.util.Scanner; 公共类bigd{ 公共静态void main(字符串[]args){ 扫描仪s=新的扫描仪(System.in); int count=s.nextInt(); //获取n个输入并将它们放入数组中 字符串[]编号=新字符串[计数]; for(int i=0;i,java,bigdecimal,Java,Bigdecimal,System.out.println(“+big[i])调用BigDecimal的toString()方法,这就是它的实现方式,这很有意义,因为数字通常是这样写的 您可以将字符串操作添加到toString()的结果中,但我不确定您为什么要这样做 没有零的动机是什么?System.out.println(“+big[i])调用BigDecimal的toString()方法,这就是它的实现方式,这很有意义,因为数字通常是这样写的 您可以将字符串操作添加到toString()的结果中,但我不确定您为什

System.out.println(“+big[i])
调用BigDecimal的
toString()
方法,这就是它的实现方式,这很有意义,因为数字通常是这样写的

您可以将字符串操作添加到
toString()
的结果中,但我不确定您为什么要这样做

没有零的动机是什么?

System.out.println(“+big[i])
调用BigDecimal的
toString()
方法,这就是它的实现方式,这很有意义,因为数字通常是这样写的

您可以将字符串操作添加到
toString()
的结果中,但我不确定您为什么要这样做


你没有零的动机是什么?

你可以使用十进制来去掉前面的0

import java.math.BigDecimal;
import java.util.Scanner;

public class bigd {

    public static void main(String[]args) {

        Scanner s=new Scanner(System.in);   
        int count=s.nextInt();

        // take  n inputs and put them in array
        String [] number=new String [count] ;

        for(int i=0; i<number.length; i++) {        
            number[i]=s.next();     
        }// end transfer forr 

        BigDecimal [] big=new BigDecimal[count];

        for(int i=0;i<number.length; i++) { 
            big[i]= new BigDecimal(number[i]);  
        }// big loop

        //sorting 
        for(int i=0; i<big.length; i++) {   
            for(int j=i+1; j<big.length; j++) { 
                if(big[i].compareTo(big[j])<0) {
                    BigDecimal temp=big[i];
                    big[i]=big[j];
                    big[j]=temp;        
                }// if end      
            }// inner loop  
        } // outer sort loop 
        //end soting

        //display
        for(int i=0; i<big.length;i++) {
            System.out.println(" "+ big[i]);
        }//end disp

        s.close();  
    }// main

}// class

您可以使用十进制格式删除前面的0

import java.math.BigDecimal;
import java.util.Scanner;

public class bigd {

    public static void main(String[]args) {

        Scanner s=new Scanner(System.in);   
        int count=s.nextInt();

        // take  n inputs and put them in array
        String [] number=new String [count] ;

        for(int i=0; i<number.length; i++) {        
            number[i]=s.next();     
        }// end transfer forr 

        BigDecimal [] big=new BigDecimal[count];

        for(int i=0;i<number.length; i++) { 
            big[i]= new BigDecimal(number[i]);  
        }// big loop

        //sorting 
        for(int i=0; i<big.length; i++) {   
            for(int j=i+1; j<big.length; j++) { 
                if(big[i].compareTo(big[j])<0) {
                    BigDecimal temp=big[i];
                    big[i]=big[j];
                    big[j]=temp;        
                }// if end      
            }// inner loop  
        } // outer sort loop 
        //end soting

        //display
        for(int i=0; i<big.length;i++) {
            System.out.println(" "+ big[i]);
        }//end disp

        s.close();  
    }// main

}// class

最简单的解决方案可能是对由
BigDecimal.toString()
生成的标准格式执行一些字符串操作,如

BigDecimal d = new BigDecimal(".21");
DecimalFormat df = new DecimalFormat("#.00");
System.out.print(df.format(d).toString());
输出:
.12

如果您想使用
DecimalFormat
,这应该适用于您给出的示例输入:

BigDecimal bd = new BigDecimal(".12");    
System.out.println(bd.toString().replaceFirst("^0\\.", "."));
输出:
.12

但请注意,这将打印最多2个小数位数。您可以将其增加到您希望在小数部分中看到的位数

但是,如果要确保查看
BigDecimal
中的所有小数位数,可以执行以下操作:

BigDecimal big = new BigDecimal(".12");
DecimalFormat df = new DecimalFormat(".##");
System.out.println(df.format(big));

输出:
.123456789

最简单的解决方案可能是对由
BigDecimal.toString()
生成的标准格式执行一些字符串操作,如

BigDecimal d = new BigDecimal(".21");
DecimalFormat df = new DecimalFormat("#.00");
System.out.print(df.format(d).toString());
输出:
.12

如果您想使用
DecimalFormat
,这应该适用于您给出的示例输入:

BigDecimal bd = new BigDecimal(".12");    
System.out.println(bd.toString().replaceFirst("^0\\.", "."));
输出:
.12

但请注意,这将打印最多2个小数位数。您可以将其增加到您希望在小数部分中看到的位数

但是,如果要确保查看
BigDecimal
中的所有小数位数,可以执行以下操作:

BigDecimal big = new BigDecimal(".12");
DecimalFormat df = new DecimalFormat(".##");
System.out.println(df.format(big));

输出:
.123456789

这应该是3个不同的例子吗?@jhamon我会说这是因为这么说“这篇文章没有足够的文本”…我试过了,但它没有像你说的那样显示出来。我试过:*System.out.println(新的BigDecimal(12))@AymenRagoubi 12和0.12之间可能有差异…在整数前面通常没有0填充,我以为你是用12得到的,对不起。这应该是3个不同的例子吗?@jhamon我会说是因为这样说“这篇文章没有足够的文本”…我试过了,但它并不像你说的那样显示。我试过:**System.out.println(新的BigDecimal(12))@AymenRagoubi 12和0.12之间可能有差异…整数前面通常没有0填充。我想你是用12得到的,对不起。预期输出希望我不要添加任何零,这就是原因。预期输出希望我不要添加任何零,这就是原因。