【JAVA】正10進小数mからn進小数に変換
9908 ワード
タイトル:
プログラミングプログラムは任意の10進数正小数mをn進数の正小数に変換し、小数点後に10桁の小数を保持する.入力には2つの数m,nが含まれ、スペースで区切られています.入力には複数のテストが含まれ、m,nが0の場合に入力が終了します.Limits: 0.0000009
サンプル:入力サンプル:0.795 3 0出力サンプル:0.2101101122
コード:
初めて筆記試験をしたとき、ちょうど前の晩にやった十進法から十六進法整数問題に似た進数変換の問題を引いた.試験が終わってからやっと書き終わったので,こまごました知識点が枯れてしまった.ポイント:1.複数行入力、最終出力.2.タイプ変換.3.小数変換は最後の逆順ではなく、整数逆順であれば
結果:
変換ノートについて
一、stringとint間の変換
1、stringをintに変換する:
2、intからstringへの変換:
1、intをcharに変換する:
第1ステップ:
三、Intとdouble間の変換
1.intからdoubleへの変換:強制タイプ変換
プログラミングプログラムは任意の10進数正小数mをn進数の正小数に変換し、小数点後に10桁の小数を保持する.入力には2つの数m,nが含まれ、スペースで区切られています.入力には複数のテストが含まれ、m,nが0の場合に入力が終了します.Limits: 0.0000009
サンプル:入力サンプル:0.795 3 0出力サンプル:0.2101101122
コード:
初めて筆記試験をしたとき、ちょうど前の晩にやった十進法から十六進法整数問題に似た進数変換の問題を引いた.試験が終わってからやっと書き終わったので,こまごました知識点が枯れてしまった.ポイント:1.複数行入力、最終出力.2.タイプ変換.3.小数変換は最後の逆順ではなく、整数逆順であれば
sb.reverse()
が必要です.4.小数点保持ビット数は配列の容量によって実現される.import java.util.Scanner;
public class 10-n {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
StringBuffer sb = new StringBuffer();
// answer , 。
while(true){
double m = sc.nextDouble(); // m
int n = sc.nextInt();// n ,
if((m == 0)&&(n == 0)) {
// 0 ,
System.out.print(sb);
break;//
}
sb.append("0.");
for(int i : getm(m,n)) {
sb.append(String.valueOf(i));// int String 。
}
sb.append("
");
}
}
private static int[] getm(Double m,int p){
Double n = (double)p;// in double ,
int[] T = new int[10];//
for(int index = 0;index < 10;index++) {
m = n*m;// int*double, int
int i = new Double(m).intValue();//double int 。 。
T[index] = i;
if(m >= 1.0) {
m = m - i;
}
}
return T;// int
}
}
結果:
0.795 2
0.795 3
0.795 4
0.795 5
0.795 6
0 0
0.1100101110
0.2101101122
0.3023201101
0.3441414141
0.4434153041
変換ノートについて
一、stringとint間の変換
1、stringをintに変換する:
Integer.valueOf("12")
(2020.2.19、これで問題が発生したが、なぜ問題が発生したのか分からなかった.char-int:1=「1」-「0」という別の文字型をintに変換する方法を探した.文字型1から「0」を減算asciiコードは、数字1である.2、intからstringへの変換:
String.valueOf(12)
二、charとint間の変換1、intをcharに変換する:
第1ステップ:
String str=String.valueOf('2')
第2ステップ:char c = str.charAt(0)
、char/stringをintに変換Integer.valueOf(str)
またはInteger.PaseInt(str)
備考:Integer.valueOf
はIntegerオブジェクト、Integer.paseInt
はintを返します三、Intとdouble間の変換
1.intからdoubleへの変換:強制タイプ変換
Double d = (double)123;
.doubleからintへの変換:強制タイプでint i = new Double(0.123).intValue();
を変換できません