如何处理 java 上非常大的数字的计算?

How to handle calculations with really big numbers on java?

我正在开发一个从文件中读取一些数字的程序。有了这些数字,然后程序需要使用我稍后提供的公式计算结果数字。

文件格式如下:

3 //number of tests
28347823734 /*argument 1 of test 1*/ 78353845787 /*argument 2 of test 1*/
63747289347 /*argument 1 of test 2*/ 242489983758 /*argument 2 of test 2*/
75472934872 /*argument 1 of test 3*/ 627364829374 /*argument 2 of test 3*/

解析每个测试的每个值后,必须计算得出结果的公式如下:

result = argument1 * 8 * argument2

稍后在程序中,我必须将结果与星期几联系起来。例如,如果结果为 2,则日期为星期三,如果结果为 8,则日期为星期二。 为了处理这个问题,我执行了以下方法。 (结果需要除以8)

String str = calculateDay(result/8);

为了知道星期几,我创建了以下方法:

private String calculateDay (long n) {

        String days = new String[]{"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"};
        int d = 0;

        for (long i=1; i<=n; i++) {
            if (d==6) {
                d=0;
                continue;
            }

            d++;
        }

        return days[d];
    }

这里的问题是,对于一个包含 100 个不同测试的文本文件,这将需要很长时间才能完全执行,因为数字真的很大,所以...我该如何处理?

  1. 大数: 这些数字看起来应该非常适合 long 值。但是如果long不够大,可以用java.Math.BigInteger

  2. 计算天数: 对此的计算只是 numDays % daysOfTheWeek。如果你需要使用BigInteger,它有一个mod(...)方法