float または int を文字列に変換するアルゴリズムを実装するにはどうすればよいですか? リンクを 1 つ見つけました http://geeksforgeeks.org/forum/topic/amazon-interview-question-for-software-engineerdeveloper-0-2-years-about-algorithms-13
しかし、そこに与えられたアルゴリズムを理解できません
float または int を文字列に変換するアルゴリズムを実装するにはどうすればよいですか? リンクを 1 つ見つけました http://geeksforgeeks.org/forum/topic/amazon-interview-question-for-software-engineerdeveloper-0-2-years-about-algorithms-13
しかし、そこに与えられたアルゴリズムを理解できません
0 ~ 9 の数字は、ほとんどの文字エンコーディングで連続しているため、整数値をいじるとここで役立ちます。
int val;
String str="";
while(val>0){
str = ('0'+(val%10)) + str;
val /= 10;
}
整数から文字列への変換方法のサンプルを次に示します。この例から、浮動小数点数から文字列への変換方法を理解していただければ幸いです。
public String intToString(int value) {
StringBuffer buffer = new StringBuffer();
if (value < 0) {
buffer.append("-");
}
// MAX_INT is just over 2 billion, so start by finding the number of billions.
int divisor = 1000000000;
while (divisor > 0) {
int digit = value / divisor; // integer division, so no remainder.
if (digit > 0) {
buffer.append('0'+digit);
value = value - digit * divisor; // subtract off the value to zero out that digit.
}
divisor = divisor / 10; // the next loop iteration should be in the 10's place to the right
}
}
もちろん、これは非常に最適化されていませんが、最も基本的な書式設定がどのように行われるかの感触をつかむことができます。
のテクニックは、"" + x
実際には次のように書き直されていることに注意してください。
StringBuffer buffer = new StringBuffer();
buffer.append("");
buffer.append(String.valueOf(x));
buffer.toString();
ですから、書かれていることが 100% 正確にどのように行われるとは考えないでください。物事をより大きな視点で見なければならないことを見てください。
さて、あなたは自分でコードを読むことができます。
一般的な考え方は、残りの 10 をとって最下位桁を取り出すことです。次に、その数を 10 で割って、ゼロになるまで繰り返します。
もちろん、特にそのfloat
場合は、それよりも少し複雑です。
int fomrat に 1 桁の数字がある場合、それを char に挿入する必要があります。int を char に変換するにはどうすればよいですか?
簡単:
int digit = ... /* 0 to 9 */
char ch = (char)('0' + digit);