Classe d'opérations numériques Java
Un. Cours de mathématiques
La classe Math est une classe d'opération dédiée aux calculs mathématiques, qui fournit une série de méthodes de calcul mathématiques. Toutes les méthodes fournies dans la classe Math sont des méthodes statiques, elles peuvent donc être appelées directement par le nom de la classe.
Exemple: observer l'opération d'arrondi
package Project.Study.MathClass;
public class Test1 {
public static void main(String[]args){
System.out.println(Math.round(15.5));
System.out.println(Math.round(-15.51));
System.out.println(Math.round(-15.4));
System.out.println(Math.round(-15.45));
System.out.println(Math.round(-15.6));
System.out.println(Math.round(15.46));
System.out.println(Math.round(-15.5));
}
}
//结果:
//16
//-16
//-15
//-15
//-16
//15
//-15
À partir du programme ci-dessus, nous pouvons constater que seule la décimale des données d'opération est supérieure à 0,5 et que la décimale est inférieure ou égale à 0,5.
Exemple: implémentez l'opération d'arrondi pour le nombre de chiffres spécifié
package Project.Study.MathClass;
public class Test2 {
public static void main(String[]args){
System.out.println(round(-15.678139,2));
}
/**
* 四舍五入操作,可以保留指定长度的小数位数
* @param num 要进行四舍五入操作的数字
* @param scale 保留的小数位
* @return 四舍五入后的数据
*/
public static double round(double num,int scale){
//Math.pow()的方法作用是进行10的N次方的计算
return Math.round(num*Math.pow(10.0,scale))/Math.pow(10.0,scale);
}
}
//结果:
//-15.68
Deux. Classe aléatoire
La classe Random est une classe d'opération dédiée à la génération de nombres aléatoires .
Méthodes courantes de la classe Random:
Non. | La méthode | Tapez | La description |
---|---|---|---|
1 | public Random () | La structure | Créer une nouvelle instance aléatoire |
2 | public Random (longue graine) | La structure | Créer une nouvelle instance aléatoire et définir un numéro de départ |
3 | public int nextInt (int lié) | Ordinaire | Génère un entier aléatoire non supérieur à la limite spécifiée |
Exemple: Générez 10 entiers positifs non supérieurs à 100
package Project.Study.RandomClass;
import java.util.Random;
public class Test1 {
public static void main(String[]args){
Random rand=new Random();
for(int x=0;x<10;x++){
System.out.print(rand.nextInt(100)+"、");
}
}
}
//结果:
//89、93、9、96、33、76、10、80、41、87、
Exemple: système de sélection des numéros (36 sur 7)
package Project.Study.RandomClass;
import java.util.Random;
public class Test2 {
public static void main(String[]args){
Random rand=new Random();
int[] data =new int[7]; //开辟一个7个元素的数组,保存生成数字
int foot=0; //数组操作脚标
while(foot<7){
int t=rand.nextInt(37);//生成一个不大于37的随机数
if(!isRepeat(data,t)){ //重复的话就不执行
data[foot++]=t; //保存数据
}
}
java.util.Arrays.sort(data);//排序
for (int datum : data) {
System.out.print(datum + "、");
}
}
/**
* 此方法主要是判断是否存在重复内容
* @param temp 指的是已经保存的数据
* @param num 新生成的数据
* @return 如果存在返回true,否则返回false
*/
public static boolean isRepeat(int[] temp, int num){
if(num==0){ //没有必要判断了
return true; //直接返回,随后的代码都不再执行
}
for (int i : temp) {
if (i == num) {
return true;//表示后面的数据都不再进行判断
}
}
return false;
}
}
//结果:
//2、9、12、13、18、28、31、
3. Grande opération numérique
1. Grande classe d'opérations entières: BigInteger
Les grands entiers peuvent fonctionner sur des données entières infinies.
Méthode d'opération de base de la classe BigInteger:
Non. | La méthode | Tapez | La description |
---|---|---|---|
1 | public BigInteger (String val) | La structure | Instancier un objet BigInteger |
2 | add public BigInteger (BigInteger val) | Ordinaire | Opération d'addition |
3 | soustrait public BigInteger (BigInteger val) | Ordinaire | Opération de soustraction |
4 | multiplication BigInteger publique (BigInteger val) | Ordinaire | Opération multipliée |
5 | division BigInteger publique (BigInteger val) | Ordinaire | Opération de division (pas de reste) |
6 | public BigInteger [] divideAndRemainder (BigInteger val) | Ordinaire | Opération de division (conserver le reste), le premier élément du tableau est le quotient, le deuxième élément est le reste |
Exemple: effectuer des calculs de grands nombres entiers
package Project.Study.BigIntegerClass;
import java.math.BigInteger;
public class Test1 {
public static void main(String[]args){
BigInteger bigA=new BigInteger("123456789013213214214"); //大数字A
BigInteger bigB=new BigInteger("2324342314132432432"); //大数字B
System.out.println("加法操作:"+bigA.add(bigB));
System.out.println("减法操作:"+bigA.subtract(bigB));
System.out.println("乘法操作:"+bigA.multiply(bigB));
System.out.println("除法操作:"+bigA.divide(bigB));
BigInteger result[]=bigA.divideAndRemainder(bigB);
System.out.println("商:"+result[0]+",余数:"+result[1]);
}
}
//结果:
//加法操作:125781131327345646646
//减法操作:121132446699080781782
//乘法操作:286955838670331461717477157288896988448
//除法操作:53
//商:53,余数:266646364194295318
2. Classe d'opération de grand et petit nombre: BigDecimal
L'opération la plus courante utilisant la classe BigDecimal consiste à calculer le nombre exact d'arrondi.
Utilisez BigDecimal pour terminer l'opération d'arrondi:
Non. | Méthodes et constantes | Tapez | La description |
---|---|---|---|
1 | public static final int ROUND_HALF_UP | Constante | Porter vers le haut |
2 | BigDecimal public (double val) | La structure | Passez une double donnée |
3 | public BigDecimal divide (diviseur BigDecimal scale échelle int , int roundingMode) | Ordinaire | L'opération de division, la signification de référence est la suivante: BigDecimal divisor: dividende, int scale: longueur des décimales réservées; int roundingMode: mode de report |
Exemple: opération d'arrondi précise et complète
ckage Project.Study.BigDecimalClass;
import java.math.BigDecimal;
class MyMath{
public static double round(double num,int scale){
BigDecimal big=new BigDecimal(num); //将数据封装在BigDecimal类中
BigDecimal result= big.divide(new BigDecimal(1), scale, BigDecimal.ROUND_HALF_UP); //除法计算
return result.doubleValue(); //Number类的方法
}
}
public class Test1 {
public static void main(String[]args){
System.out.println(MyMath.round(15.5,0));
System.out.println(MyMath.round(-15.5,0));
System.out.println(MyMath.round(1168.4344343,4));
}
}
//结果:
//16.0
//-16.0
//1168.4344