我有以下问题: 我在String中存储了大值,我只能显示7位长的数字。以下是从字符串转换为float后的示例 - 我有String 300应该是300,但它是300.0 大于7位的所有内容都应以科学记数法书写(700000000应为7E + 8) 它也可能是7.0E8,但我更喜欢7E + 8。
我已经尝试过格式化字符串,但是当我无法摆脱.0而没有摆脱科学记数法时。这甚至可能吗?
答案 0 :(得分:0)
java.text包中的类DecimalFormat几乎毫不费力地处理它。针对您的具体案例,一点点业务逻辑就可以解决这个问题。
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class NumberFormatter
{
public static void main(String args[])
{
String stringInput = "1234.5678";
String outputString = null;
if (stringInput.length() < 8)
{
outputString = stringInput;
}
else
{
outputString = scientificOutput(stringInput);
}
System.out.println(outputString);
}
private String scientificOutput(String input)
{
NumberFormat formatter = new DecimalFormat("0.###E0");
Double d = Double.parseDouble(input);
if (d % 1 == 0)
{
// is int
return formatter.format(d.intValue());
}
else
{
// is a double
return formatter.format(d);
}
}
}
答案 1 :(得分:0)
试试这个:
String inputValue = "700000000";
String result;
DecimalFormat df1 = new DecimalFormat("@######");
df1.setMinimumFractionDigits(0);
DecimalFormat df2 = new DecimalFormat("@#####E0");
df2.setMinimumFractionDigits(1);
if (inputValue.length() <= 7) {
result = df1.format(Double.parseDouble(inputValue));
} else {
result = df2.format(Double.parseDouble(inputValue));
}