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

Java Float.toString()和Integer.toString()是如何工作的?,java,array-algorithms,Java,Array Algorithms,如何实现将float或int转换为字符串的算法? 我找到了一个链接 但是我无法理解那里给出的算法,一般的想法是通过取数字余数10来提取最低有效位。然后将数字除以10,然后重复。。。直到你剩下零 当然,它比这要复杂一些,特别是在float情况下 如果在int fomrat中有一个数字,那么我需要将它插入char,如何将int转换为char 简单: 下面是一个如何将整数转换为字符串的示例,我希望您能够从中了解如何将浮点转换为字符串 public String intToString(int va

如何实现将float或int转换为字符串的算法? 我找到了一个链接


但是我无法理解那里给出的算法,一般的想法是通过取数字余数10来提取最低有效位。然后将数字除以10,然后重复。。。直到你剩下零

当然,它比这要复杂一些,特别是在
float
情况下


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

简单:


下面是一个如何将整数转换为字符串的示例,我希望您能够从中了解如何将浮点转换为字符串

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
  }
}

因此,不要认为所写的内容100%都是如何完成的,而要从更大的角度来看待所必须发生的事情。

在大多数字符编码中,数字0-9是连续的,因此,在这里,旋转它的整数值会有所帮助:

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

嗯,你可以

你是在问如何实现它,还是JDK实际上是如何实现的?这是一个面试问题,我不想把我自己的algointeger实现为string更简单。对于double-to-string这个guidlines可能会有帮助:同意,但是如果我在int-fomrat中有一个单数,那么我需要将它插入到char中,如何将int转换为char?如果有人试图将字符集换成一个没有顺序数字的字符集(记住这是一个面试问题,不是现实世界的问题)您总是可以使用switch语句来实现
buffer.append('0'+digit)
,比如
switch(digit){case 0:buffer.append(“0”);break;case 1:buffer.append(“1”);break;…}
使用StringBuffer是完全无用的,因为java编译器无论如何都会用一个替换字符串连接。@Nicolas,如果所有连接发生在同一本地化块中,编译器仅使用
StringBuffer
替换字符串连接。所以,
System.out.println(“(“+x+”,“+y+”))工作正常,但是,
String x=“”;对于(int i=0;i<5;i++){x=x++'0'+i;}
不会在循环迭代之间保持缓冲区。此示例比另一个示例好得多。它很简单,关注问题,容易理解。
StringBuffer buffer = new StringBuffer();
buffer.append("");
buffer.append(String.valueOf(x));
buffer.toString();
int val;
String str="";
while(val>0){
    str = ('0'+(val%10)) + str;
    val /= 10;
}