Float.toString()和Integer.toString()如何工作?

时间:2011-05-12 14:38:53

标签: java array-algorithms

如何实现将float或int转换为字符串的算法? 我找到了一个链接 http://geeksforgeeks.org/forum/topic/amazon-interview-question-for-software-engineerdeveloper-0-2-years-about-algorithms-13

但我无法理解那里给出的算法

4 个答案:

答案 0 :(得分:6)

数字0-9在大多数字符编码中都是连续的,所以在这里使用它的整数值会有所帮助:

int val;
String str="";
while(val>0){
    str = ('0'+(val%10)) + str;
    val /= 10;
}

答案 1 :(得分:3)

以下是如何将整数转换为字符串的示例,我希望您能够弄清楚如何将float转换为字符串。

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%完全如何完成,看看就像在更大的视角中必须发生的那样。

答案 2 :(得分:2)

一般的想法是通过取数字余数为10来挑选最低有效数字。然后将数字除以10并重复......直到你留下零。

当然,它比这更复杂,特别是在float情况下。


  

如果我在int fomrat中有一个数字,那么我需要将它插入到char中,如何将int转换为char?

易:

int digit = ... /* 0 to 9 */
char ch = (char)('0' + digit);

答案 3 :(得分:2)

嗯,你可以read the code yourself.