北大医院妇幼保健院:有关java语言long型数

来源:百度文库 编辑:高考问答 时间:2024/05/01 16:58:48
问题:任意输入一个自然数,分别打印出各个数位上的数
import java.io.*;
public class Zy421_23
{
static String s="";
public static void main(String[] args)
{
byte Wei[]=new byte[19],Weishu=0;
long l_input=0;
System.out.println("请输入您要调查的数:");
l_input=Long.parseLong(input());
Weishu=(byte)s.length();
System.out.println("您输入的是"+Weishu+"位自然数:"+l_input);
for(int i=0;Weishu>=1;i++,Weishu--)
{
Wei[i]=(byte)(l_input/Math.pow(10,Weishu-1)%10);
System.out.print("第"+(i+1)+"位是 "+Wei[i]+"\n");
}
}
public static String input()
{
try
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();
}
catch (IOException e){}
return s;
}
}
输入一个17位以上的数为什么会在17位和以后的数都是错的?怎么解决?

long类型是最长的了,处理这种问题的时候一般是将数据分割,也可以通过乘除或取对数转化为double型,但是可能会影响精确度(看具体数位)

解决超长数据的问题不可能依赖java自身提供的数据类型

Java中有个高精度类型的,好像叫BigInteger吧?