簡體   English   中英

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

[英]how does Float.toString() and Integer.toString() works?

如何實現將float或int轉換為字符串的算法? 我找到了一個鏈接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,然后重復...,直到剩下零為止。

當然,它要比這復雜得多,尤其是在float情況下。


如果我在int fomrat中有一位數字,那么我需要將其插入char中,如何將int轉換為char?

簡單:

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

好了,您可以自己閱讀代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM