JAVA : Math, BigDecimal
57841 ワード
こんにちは!😊 今日はMathとBigDecimalについて
Math
Mathは、数式セクションを作成するときに使用するクラスです.Java™ Platform Standard Ed. 8のMath Classをクリックすると、次の画面が表示されます.
Mathクラスのメソッドは次のとおりです.
method名説明round丸め:小数点の1番目の丸めで渡されたエラーの結果を返します.Ceil昇格:入力エラーより小さい整数の最小整数を返します.floor down:入力エラーより小さい整数の中で最大の整数を返します.pow二乗演算:最初の引数値の数に2番目の引数値を乗算します.abs絶対値を返します.正の値は負の値を返します.2つの最大値のうち1つの大きな値を返します.minは、2つの数の小さい値を返します.
それ以外にも、Mathクラスにはいろいろな方法があります.すべてのメソッドのモディファイヤとタイプは静的で、Math.メソッド名. Math.random()
Modifier and TypeMethodDescriptionstatic doublerandom()Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
0~1の間の任意の値を出力します.この数を乱数といいます.
Math.ランダム()使用例
これらの数字を使用すると、デジタルゲームや宝くじ番号の作成、ランダムID、ランダムパスワード&ランダム検証コードの作成ができます.
デジタルゲームを当てるとMath0と1の間の乱数を作成した後、100を乗じて実数を整数に変換し、1を加えて任意の数字を指定してゲームを開始します.
👀 case1
java.langパッケージにはMathクラスもありますがjava.mathパッケージにはBigDecimalクラスが含まれています.
java.langパッケージにMathクラス、javaを配置します.math.BigDecimalクラスを使用する理由は、doubleとfloatのエラーがパラメータとして受信された場合、結果が正しくない場合があります.
✔Javaコンパイラは整数型しか知らない.😊
Mathメソッドでは,二重形式の自己変数値がしばしば受信されるが,この場合,解決策はjavaである.MathパッケージのBigDemicalクラスを利用します.
x,y,dx,dy
x,yはアルファベット数字です.文字数とは、「」または「」を削除する場合、
数字を表します.現在、この2つのストレージはStringリソースとして保存されています.
一方、dxおよびdyは、デュアルデータ型の数字である.この2つのファイルは現在、2つの資料形式で保存されています.
BigDecimal b1=new BigDecimal(x);
BigDecimal b2=new BigDecimal(y);
このコマンドインスタンスを使用して、b 1という名前の参照変数を文字数で宣言します.
このようにしてb 1、b 2を行い、この2つの変数を出力し、double資料型の変数と比較します.
BigDecimal b11=new BigDecimal(dx);
BigDecimal b22=new BigDecimal(dx);
new BigDecimal()のカッコにdoubleデータ型と文字数を入力します.
加算と減算を使用して比較した結果は次のとおりです.
BigDecimal badd=b1.add(b2);
BigDecimal badd_D=b11.add(b22);
System.out.println("bsub >>> : "+bsub);
System.out.println("bsub_D >>> : "+bsub_D);
以上、JAVA:Math BigDecimal😀
Math
Mathは、数式セクションを作成するときに使用するクラスです.Java™ Platform Standard Ed. 8のMath Classをクリックすると、次の画面が表示されます.
Mathクラスのメソッドは次のとおりです.
method名説明round丸め:小数点の1番目の丸めで渡されたエラーの結果を返します.Ceil昇格:入力エラーより小さい整数の最小整数を返します.floor down:入力エラーより小さい整数の中で最大の整数を返します.pow二乗演算:最初の引数値の数に2番目の引数値を乗算します.abs絶対値を返します.正の値は負の値を返します.2つの最大値のうち1つの大きな値を返します.minは、2つの数の小さい値を返します.
それ以外にも、Mathクラスにはいろいろな方法があります.
Modifier and TypeMethodDescriptionstatic doublerandom()Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
0~1の間の任意の値を出力します.この数を乱数といいます.
Math.ランダム()使用例
これらの数字を使用すると、デジタルゲームや宝くじ番号の作成、ランダムID、ランダムパスワード&ランダム検証コードの作成ができます.
デジタルゲームを当てるとMath0と1の間の乱数を作成した後、100を乗じて実数を整数に変換し、1を加えて任意の数字を指定してゲームを開始します.
package a.b.c.prac1;
import java.util.Scanner;
public class Math_p3{
public static void main(String[] args) {
int answer = (int)(Math.random() * 100) + 1;
System.out.println("answer >>> : " + answer);
Scanner sc=new Scanner(System.in);
int input = 0;
boolean iBool;
try {
do {
System.out.println("1 과 100 사이의 정수값을 입력하시오 >>> : ");
input = sc.nextInt();
if (input<=100 && input>=1){
iBool=answer==input;
System.out.println("정답이면 true, 아니면 false"+iBool);
if (answer==input){
System.out.println("정답입니다!! 축하드립니다!!");
break;
}else if(answer>input){
System.out.println("땡!! 다시 입력하세요!!");
System.out.println("HINT : 더 높은 숫자를 입력하세요.");
sc.nextLine();
}else if(answer<input){
System.out.println("땡!! 다시 입력하세요");
System.out.println("HINT : 더 낮은 숫자를 입력하세요.");
}
}
else{
System.out.println("잘못 입력한 값 >>> "+input);
System.out.println("범위를 다시 확인하시고, 다시 입력해주세요.");
sc.nextLine();
}
}
while (true);
}catch(Exception e){
System.out.println("정수를 입력하지 않아 게임을 종료합니다.");
}finally{
System.out.println("숫자 맞추기 게임을 종료합니다.");
sc.close();
}
}
}
✔出力結果👀 case1
answer >>> : 89
1 과 100 사이의 정수값을 입력하시오 >>> :
88
정답이면 true, 아니면 falsefalse
땡!! 다시 입력하세요!!
HINT : 더 높은 숫자를 입력하세요.
1 과 100 사이의 정수값을 입력하시오 >>> :
90
정답이면 true, 아니면 falsefalse
땡!! 다시 입력하세요
HINT : 더 낮은 숫자를 입력하세요.
1 과 100 사이의 정수값을 입력하시오 >>> :
89
정답이면 true, 아니면 falsetrue
정답입니다!! 축하드립니다!!
숫자 맞추기 게임을 종료합니다.
👀 case2answer >>> : 34
1 과 100 사이의 정수값을 입력하시오 >>> :
1000
잘못 입력한 값 >>> 1000
범위를 다시 확인하시고, 다시 입력해주세요.
1 과 100 사이의 정수값을 입력하시오 >>> :
종료
정수를 입력하지 않아 게임을 종료합니다.
숫자 맞추기 게임을 종료합니다.
宝くじ番号が生成された場合、Math.0と1の間の乱数()を作成し、実数を整数(45を乗じた)に変換し、1と45の間の乱数を作成します.次に配列を入力し、配列内の値が重複すると、for文はindexを1つ減らし、重複値を1つに統一します.package a.b.c.ch5;
public class Lotto{
public static void main(String[] args) {
String n0 = "";
String n1 = "";
char c = 'A';
String n2[]= {" 자 동 ", " 수 동 "};
for (int n=0; n < 5; n++) {
int lo[] = new int[6];
for (int i=0; i < lo.length; i++){
lo[i] = (int)(Math.random()*45) + 1;
for (int j=0; j < i; j++ ){
if (lo[j] == lo[i]){
i--;
break;
}
}
}
for (int i=0; i < lo.length; i++ ){
if (lo[0] == lo[i]) {
n1 = String.valueOf(lo[i]);
if (1 == n1.length()) {
n1 = "0" + n1;
}
n0 = c + n2[1] + n1;
c += 1;
}else {
n0 = String.valueOf(lo[i]);
if (1 == n0.length()) {
n0 = "0" + n0;
}
}
n0 += " ";
System.out.print(n0);
}
System.out.println();
}
}
}
✔出力結果A 수 동 11 10 32 02 09 08
B 수 동 26 39 43 03 06 11
C 수 동 26 41 17 24 29 20
D 수 동 17 30 35 10 34 25
E 수 동 30 05 32 02 20 44
ランダムアイデンティティ&ランダムパスワード&ランダム検証コードの作成package a.b.c.ch5;
import java.util.UUID;
public class Random_NUM {
public static String tempPW(int len) {
String u = UUID.randomUUID().toString();
System.out.println("u >>> : " + u);
u = u.replace("-","").substring(0, len);
System.out.println("u >>> : " + u);
return u;
}
public static String randomPW(int len) {
char c[] = {
'1','2','3','4','5','6','7','8','9','0',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z',
'!','@','#','&'
//'!','@','#','$','%','^','&','*','(',')'
};
String p = "";
for (int i=0; i < len; i++) {
int a = (int)(Math.random()*(c.length));
p += c[a];
}
return p;
}
public static String certificNum(int len) {
char c[] = {'1','2','3','4','5','6','7','8','9'};
String p = "";
for (int i=0; i < len; i++) {
int a = (int)(Math.random()*(c.length));
p += c[a];
}
return p;
}
public static void main(String[] args) {
String s1 = Random_NUM.tempPW(8);
String s2 = Random_NUM.randomPW(8);
String s3 = Random_NUM.certificNum(6);
System.out.println("UUID >>> : " + s1);
System.out.println("randomPW >>> : " + s2);
System.out.println("certificNum >>> : " + s3);
}
}
✔出力結果u >>> : d79d52f7-df14-4893-920d-e788666e73b4
u >>> : d79d52f7
UUID >>> : d79d52f7
randomPW >>> : QFzeh8jo
certificNum >>> : 952974
BigDecimaljava.langパッケージにはMathクラスもありますがjava.mathパッケージにはBigDecimalクラスが含まれています.
java.langパッケージにMathクラス、javaを配置します.math.BigDecimalクラスを使用する理由は、doubleとfloatのエラーがパラメータとして受信された場合、結果が正しくない場合があります.
✔Javaコンパイラは整数型しか知らない.😊
package a.b.c.prac1;
import java.math.BigDecimal;
public class Math_9 {
public static void main(String[] args) {
int x2=1;
double y2=0.1;
int num=7;
double z2=x2-(num*y2);
System.out.println("z2 >>> "+z2);
✔出力結果z2 >>> 0.29999999999999993
Googleで数値を入力して計算すると、次のようになります.Mathメソッドでは,二重形式の自己変数値がしばしば受信されるが,この場合,解決策はjavaである.MathパッケージのBigDemicalクラスを利用します.
BigDecimal b1= BigDecimal.valueOf(1);
BigDecimal b2=BigDecimal.valueOf(0.7);
System.out.println("b1.subtract(b2) >>> : "+b1.subtract(b2));
✔出力結果b1.subtract(b2) >>> : 0.3
BigDecimal実習コードpackage a.b.c.prac1;
import java.math.BigDecimal;
public class Math_10 {
public static void main(String[] args) {
String x="37.56632697499861";
String y="126.97792762801669";
BigDecimal b1=new BigDecimal(x);
System.out.println("b1 >>> : "+b1);
BigDecimal b2=new BigDecimal(y);
System.out.println("b2 >>> : "+b2);
double dx=37.56632697499861;
double dy=126.97792762801669;
BigDecimal b11=new BigDecimal(dx);
BigDecimal b22=new BigDecimal(dy);
System.out.println("dx >>> : "+dx);
System.out.println("dy >>> : "+dy);
BigDecimal badd=b1.add(b2);
System.out.println("badd >>> : "+badd);
BigDecimal badd_D=b11.add(b22);
System.out.println("badd_D >>> : "+badd_D);
BigDecimal bsub=b1.subtract(b2);
System.out.println("bsub >>> : "+bsub);
BigDecimal bsub_D=b11.subtract(b22);
System.out.println("bsub_D >>> : "+bsub_D);
}
}
出力結果b1 >>> : 37.56632697499861
b2 >>> : 126.97792762801669
dx >>> : 37.56632697499861
dy >>> : 126.97792762801669
badd >>> : 164.54425460301530
badd_D >>> : 164.54425460301529682283216970972716808319091796875
bsub >>> : -89.41160065301808
bsub_D >>> : -89.41160065301807691184876603074371814727783203125
BigDecimalコードによる解釈x,y,dx,dy
x,yはアルファベット数字です.文字数とは、「」または「」を削除する場合、
数字を表します.現在、この2つのストレージはStringリソースとして保存されています.
一方、dxおよびdyは、デュアルデータ型の数字である.この2つのファイルは現在、2つの資料形式で保存されています.
BigDecimal b2=new BigDecimal(y);
このコマンドインスタンスを使用して、b 1という名前の参照変数を文字数で宣言します.
このようにしてb 1、b 2を行い、この2つの変数を出力し、double資料型の変数と比較します.
b1 >>> : 37.56632697499861
b2 >>> : 126.97792762801669
dx >>> : 37.56632697499861
dy >>> : 126.97792762801669
🤔 ここではxの代わりに二重資料型のdxとdyを使うことはできませんか?BigDecimal b11=new BigDecimal(dx);
BigDecimal b22=new BigDecimal(dx);
new BigDecimal()のカッコにdoubleデータ型と文字数を入力します.
加算と減算を使用して比較した結果は次のとおりです.
BigDecimal badd=b1.add(b2);
BigDecimal badd_D=b11.add(b22);
System.out.println("bsub >>> : "+bsub);
System.out.println("bsub_D >>> : "+bsub_D);
badd >>> : 164.54425460301530
badd_D >>> : 164.54425460301529682283216970972716808319091796875
bsub >>> : -89.41160065301808
bsub_D >>> : -89.41160065301807691184876603074371814727783203125
上記のコードでは、doubleをパラメータとして使用し、BigDecimalクラスの参照変数を使用して結果と文字定数を計算し、BigDecimalクラスの参照変数を使用して計算する場合、その値が異なります.以上、JAVA:Math BigDecimal😀
Reference
この問題について(JAVA : Math, BigDecimal), 我々は、より多くの情報をここで見つけました https://velog.io/@yunyoseob/JAVA-Math-BigDecimalテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol