我正在尝试使用BigInteger类从二进制数打印十进制数。 我正在使用BigInteger类的BigInteger(String val,int radix)构造函数将给定的二进制值转换为十进制,但它打印的是构造函数中传递的精确二进制值.Waht是错误吗? 代码如下:
System.out.print("Ente the decimal number:");
s=String.valueOf(sc.nextInt());
BigInteger i=new BigInteger(s,10);
System.out.println(i);
答案 0 :(得分:1)
实际上您没有打印二进制数的十进制值
打印的值是String val
根据您在此声明中提到的radix
,它将如下所示:
BigInteger i = new BigInteger("11101", 10); // 11101
11101
此输出实际上是十进制数而不是二进制数
为了获得预期的结果,您应该将radix
值更改为2
,之后它将打印二进制数的十进制值:
BigInteger i = new BigInteger("11101", 2);
System.out.println(i);
<强>输出强>:
29
答案 1 :(得分:0)
如果您尝试将输入String解析为二进制文件,则应编写:
BigInteger i=new BigInteger(s,2);
打印时
System.out.println(i);
默认情况下会以十进制显示。
然而,将数字读为int
然后转换为String
并传递给BigInteger
构造函数是没有意义的,因为这限制了数字的范围那会有用。
尝试:
s = sc.nextLine();
BigInteger i=new BigInteger(s,2);
System.out.println(i);
答案 2 :(得分:0)
要以二进制形式解析输入,请使用基数为2的Scanner.nextBigInteger()
:
System.out.print("Enter the decimal number:");
BigInteger i = sc.nextBigInteger(2);
System.out.println(i);
默认情况下输出为十进制。