同楼上 ①超大整数用java.math.BigIntegerimport java.math.BigInteger;public class BigIntegerSample {
public static final BigInteger a = new BigInteger("1234567890123"); public static final BigInteger b = new BigInteger("200000000000000000000"); public static void main(String[] args) { BigInteger result = a.multiply(b); System.out.println(result.toString()); } } 输出结果:123456789012300000000000000000000②带小数的用java.math.Decimal import java.math.BigDecimal;;public class BigIntegerSample {
public static final BigDecimal a = new BigDecimal("1234567890123.1"); public static final BigDecimal b = new BigDecimal("200000000000000000000.2"); public static void main(String[] args) { BigDecimal result = a.multiply(b); System.out.println(result.toString()); } }输出结果:246913578024620000000246913578024.62
本例仅供参考。 思想是最好的,将每位数在数组中单独存放。// =============== Program Description =============== // 程序名称: array04.java // 程序目的: 设计一个可容纳40位数的求n!程序 // =================================================== import ConsoleReader.*; // 导入已定义的数据输入类public class array04 { public static void main(String args[]) {
int Data[] = new int[40]; // 储存40位数的整数数组 int Digit; // 数据位数变量 int i,j,r,k; // 回圈计数变量 int N; // 用户输入值 for (i=1;i<40;i++) // 将数组初始值设为0 Data[i] = 0; Data[0] = 1; // 设数组第0位数为1 Data[1] = 1; // 设数组第1位数为1 Digit = 1; // 设数据位数为1 System.out.print("Enter a number what you want to calculus : "); ConsoleReader console = new ConsoleReader(System.in); // 读取用户欲求的N值 N = console.readInt();
for (i=1;i<N+1;i++) { for (j=1;j<Digit+1;j++) Data[j] *= i; // 数组中内容的运算 for (j=1;j<Digit+1;j++) { if (Data[j]>10) { for (r=1;r<Digit+1;r++) { if (Data[Digit]>10) Digit++; // 当数组中的值大于10时,则位数加1 Data[r+1] += Data[r]/10; // 前一位数组值 = 前一位数组值 + 此位数组值除以10 Data[r]=Data[r]%10; // 此位数组值 = 此位数组值除10取余数 } } } System.out.print(i+"! = "); for (k=Digit;k>0;k--) // 打印出数组中的内容 System.out.print(Data[k]); System.out.println(""); } } }
// =============== Program Description =============== // 程序名称: ConsoleReader.java // 程序目的: 本类用于数据的输入及转换。 // =================================================== import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException;public class ConsoleReader { public ConsoleReader(InputStream inStream) { reader = new BufferedReader (new InputStreamReader(inStream)); }
public int readInt() // 整数输入 { String inputString = readLine(); int n = Integer.parseInt(inputString);
return n; }
public double readDouble() // 浮点数输入 { String inputString = readLine(); double x = Double.parseDouble(inputString);
不用自己写代码
不用自己写代码
①超大整数用java.math.BigIntegerimport java.math.BigInteger;public class BigIntegerSample {
public static final BigInteger a = new BigInteger("1234567890123");
public static final BigInteger b = new BigInteger("200000000000000000000"); public static void main(String[] args) {
BigInteger result = a.multiply(b);
System.out.println(result.toString());
}
}
输出结果:123456789012300000000000000000000②带小数的用java.math.Decimal import java.math.BigDecimal;;public class BigIntegerSample {
public static final BigDecimal a = new BigDecimal("1234567890123.1");
public static final BigDecimal b = new BigDecimal("200000000000000000000.2"); public static void main(String[] args) {
BigDecimal result = a.multiply(b);
System.out.println(result.toString());
}
}输出结果:246913578024620000000246913578024.62
用java.math.BigInteger,java.math.Decimal
本例仅供参考。
思想是最好的,将每位数在数组中单独存放。// =============== Program Description ===============
// 程序名称: array04.java
// 程序目的: 设计一个可容纳40位数的求n!程序
// ===================================================
import ConsoleReader.*; // 导入已定义的数据输入类public class array04
{
public static void main(String args[])
{
int Data[] = new int[40]; // 储存40位数的整数数组
int Digit; // 数据位数变量
int i,j,r,k; // 回圈计数变量
int N; // 用户输入值 for (i=1;i<40;i++) // 将数组初始值设为0
Data[i] = 0; Data[0] = 1; // 设数组第0位数为1
Data[1] = 1; // 设数组第1位数为1
Digit = 1; // 设数据位数为1 System.out.print("Enter a number what you want to calculus : ");
ConsoleReader console = new ConsoleReader(System.in);
// 读取用户欲求的N值
N = console.readInt();
for (i=1;i<N+1;i++)
{
for (j=1;j<Digit+1;j++)
Data[j] *= i; // 数组中内容的运算
for (j=1;j<Digit+1;j++)
{
if (Data[j]>10)
{
for (r=1;r<Digit+1;r++)
{
if (Data[Digit]>10)
Digit++;
// 当数组中的值大于10时,则位数加1
Data[r+1] += Data[r]/10;
// 前一位数组值 = 前一位数组值 + 此位数组值除以10
Data[r]=Data[r]%10;
// 此位数组值 = 此位数组值除10取余数
}
}
}
System.out.print(i+"! = ");
for (k=Digit;k>0;k--) // 打印出数组中的内容
System.out.print(Data[k]);
System.out.println("");
}
}
}
// =============== Program Description ===============
// 程序名称: ConsoleReader.java
// 程序目的: 本类用于数据的输入及转换。
// ===================================================
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;public class ConsoleReader
{
public ConsoleReader(InputStream inStream)
{
reader = new BufferedReader (new InputStreamReader(inStream));
}
public int readInt() // 整数输入
{
String inputString = readLine();
int n = Integer.parseInt(inputString);
return n;
}
public double readDouble() // 浮点数输入
{
String inputString = readLine();
double x = Double.parseDouble(inputString);
return x;
} public String readLine()
{
String inputLine = "";
try
{
inputLine = reader.readLine();
}
catch(IOException e)
{
System.out.println(e);
System.exit(1);
} return inputLine;
}
private BufferedReader reader;
}