我有以下函数获取一个整数(来自数据库,但我检查过该函数中的数字是否正确发送)。我想转换为字符串并以特定的方式返回它,具体取决于数字的大小。
出于一些奇怪的原因,它可以正常使用数字< 10000,但从那时起,它只显示了奇怪的结果
功能是:
$image = $row['image1'];
echo "<img src=\"$image\">";
一些测试和结果:
public static String numberTransformation(int number){
String str=String.valueOf(number);
System.out.println("#################### NUMBER BEFORE TRANSFORMATION" + str);
if(number<=999){
return str;
}
else if(number>999 && number<1099){
return "1k";
}
else if(number>1099 && number<=9999){
return str.charAt(0) + "." + str.charAt(1) + "k";
}
else if (number>9999 && number<=99999){
return str.charAt(0) + str.charAt(1) + "k";
}
else if (number>99999 && number<=999999){
return str.charAt(0) + str.charAt(1) + str.charAt(2) + "k";
}
return "";
}
我做错了什么?它与数字大于10000有什么关系吗?
答案 0 :(得分:9)
return str.charAt(0) + str.charAt(1) + "k";
不会连接str
的第一个和第二个字符,它会添加两个char
的数值。
在您的示例中,&#39; 1&#39;的数值(49)和&#39; 0&#39;的数值(48)被添加,你得到97 +&#34; k&#34;而不是&#34; 10k&#34;。
相反,请使用:
return "" + str.charAt(0) + str.charAt(1) + "k";
或
return str.substring(0,2) + "k";
以执行String
连接。
同样适用:
return str.charAt(0) + str.charAt(1) + str.charAt(2) + "k";
应更改为:
return "" + str.charAt(0) + str.charAt(1) + str.charAt(2) + "k";
或:
return str.substring(0,3) + "k";
作为替代方案,您可以使用StringBuilder
代替String
连接。