java.math.BigInteger.subtract(BigInteger val)用于计算两个BigInteger的算术差。此方法适用于比Java最大数据类型double的范围大得多的范围的大数值,而不会影响结果的精度,但是由于BigInteger类内部使用整数数组进行处理,因此不对BigIntegers的对象进行运算像在图元上一样快。此方法对当前的BigInteger执行操作,调用该方法并将BigInteger作为参数传递。
用法:
public BigInteger subtract(BigInteger val)
参数:此方法接受参数val,该参数是要从此BigInteger中减去的值。
返回值:此方法返回一个保存差异(this – val)的BigInteger。
下面的程序用于说明BigInteger的subtract()方法。
示例1:
// Java program to demonstrate
// subtract() method of BigInteger
import java.math.BigInteger;
public class GFG {
public static void main(String[] args)
{
// BigInteger object to store result
BigInteger diff;
// For user input
// Use Scanner or BufferedReader
// Two objects of String created
// Holds the values to calculate the difference
String input1
= "56454210032311316797946498748";
String input2
= "34664864678464621214565587864";
// Convert the string input to BigInteger
BigInteger a
= new BigInteger(input1);
BigInteger b
= new BigInteger(input2);
// Using subtract() method
diff = a.subtract(b);
// Display the result in BigInteger
System.out.println("The difference of\n"
+ a + " \nand\n" + b + " "
+ "\nis\n" + diff);
}
}
The difference of 56454210032311316797946498748 and 34664864678464621214565587864 is 21789345353846695583380910884
示例2:
// Java program to demonstrate
// subtract() method of BigInteger
import java.math.BigInteger;
public class GFG {
public static void main(String[] args)
{
// BigInteger object to store result
BigInteger diff;
// For user input
// Use Scanner or BufferedReader
// Two objects of String created
// Holds the values to calculate the difference
String input1 = "012345678901234567"
+ "8901234567890123"
+ "4567890123456789"
+ "0123456789012345"
+ "6789012345678901"
+ "2345678901234567"
+ "8901234567890123"
+ "4567890123456789"
+ "0123456789012345"
+ "6789012345678901"
+ "2345678901234567"
+ "8901234567890123"
+ "4567890123456789"
+ "0123456789012345"
+ "6789012345678901"
+ "2345678901234567"
+ "8901234567890123"
+ "4554324324362432"
+ "7674637264783264"
+ "7832678463726478"
+ "3264736274673864"
+ "7364732463546354"
+ "6354632564532645"
+ "6325463546536453"
+ "6546325463546534"
+ "6325465345326456"
+ "4635463263453264"
+ "654632498739473";
String input2 = "0123456789012345"
+ "6789012345678901"
+ "2345678901234567"
+ "8901234567890123"
+ "4567890123456789"
+ "0123456789012345"
+ "6789012345678901"
+ "2345678901234567"
+ "8901234567890123"
+ "4567890123456789"
+ "0123456789012345"
+ "6789012345678901"
+ "2345678901234567"
+ "8901234567890123"
+ "4567890123456789"
+ "0123456789012345"
+ "6789012345678901"
+ "2345873271893718"
+ "2974897146378481"
+ "7489127847281478"
+ "2174871248721847"
+ "8748327463756475"
+ "6745781641263981"
+ "2839721897438974"
+ "3286574365764576"
+ "2376914689217817"
+ "4362473624721647"
+ "61247612748612746";
// Convert the string input to BigInteger
BigInteger a
= new BigInteger(input1);
BigInteger b
= new BigInteger(input2);
// Using subtract() method
diff = a.subtract(b);
// Display the result in BigInteger
System.out.println("The difference of\n"
+ a + " \nand\n" + b + " "
+ "\nis\n" + diff);
// Using double to hold the result
double d = Double.parseDouble(diff.toString());
// Display the result in double
System.out.println("Using double, difference is "
+ d);
}
}
The difference of
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234554324324362432767463726478326478326784637264783264736274673864736473246354635463546325645326456325463546536453654632546354653463254653453264564635463263453264654632498739473
and
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234587327189371829748971463784817489127847281478217487124872184787483274637564756745781641263981283972189743897432865743657645762376914689217817436247362472164761247612748612746
is
-33002865009396981507737306491010801062644213434222388597510922746801391210121282235315618654827646726197360979211111111291108913660035764552871611899208711496592980249873273
Using double, difference is -3.300286500939698E172
从上面的示例中可以明显看出,使用BigInteger时数据是完全精确的。
相关用法
- Java BigDecimal subtract()用法及代码示例
- Java BigInteger gcd()用法及代码示例
- Java BigInteger add()用法及代码示例
- Java 8 BigInteger divideAndRemainder()用法及代码示例
- Java BigInteger divide()用法及代码示例
- Java BigInteger isProbablePrime()用法及代码示例
- Java BigInteger sqrtAndRemainder()用法及代码示例
- Java 8 BigInteger longValueExact()用法及代码示例
- Java 8 BigInteger shortValueExact()用法及代码示例
- Java BigInteger nextProbablePrime()用法及代码示例
- Java BigInteger intValueExact()用法及代码示例
- Java BigInteger multiply()用法及代码示例
- Java 8 BigInteger byteValueExact()用法及代码示例
- Java BigInteger and()用法及代码示例
- Java BigInteger not()用法及代码示例
注:本文由纯净天空筛选整理自Rajnis09大神的英文原创作品 BigInteger subtract() Method in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。