java.math 有两个处理任意长度的类:BigInterger
and BigDecimal
。它们可以处理任意长度的数字序列的数值,分别代表整数运算,浮点数运算。
与 C++ 不同,Java 没有提供运算符重载功能。程序员无法重定义 + 和 * 运算符,使其应用于 BigInteger 类的
add()
和multiply()
运算。Java 语言的设计者确实为字符串的连接重载了 + 运算符,但没有重载其他的运算符,也没有给 Java 程序员在自己的类中重载运算符的机会。
add(), subtract(), multiply(), divide(), mod(), 分别代表加、减、乘、除和取余。
a.compareTo(b) 表示大数之间的比较,相等返回 0,a < b
返回负数,否则返回正数。
valueOf(long x),返回等于 x 的大整数。注意,该方法为静态方法。
这里要注意 BigDecimal
的 divide()
与 BigInteger
不同。
BigDecimal divide (BigDecimal other, RoundingMode mode)
这里要给出舍入方式(rounding mode)。RoundingMode.HALF_UP 是四舍五入方式,其他方式可看 API 文档。