如何实现将浮点数或整数转换为字符串的算法?我找到了一个链接 http://geeksforgeeks.org/forum/topic/amazon-interview-question-for-software-engineerdeveloper-0-2-years-about-algorithms-13
但我无法理解那里给出的算法
如何实现将浮点数或整数转换为字符串的算法?我找到了一个链接 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);
好吧,您可以自己阅读代码。