Java 四舍五入或科学记数法
如果我的数字超过8个字符,我想对其进行四舍五入 比如说,Java 四舍五入或科学记数法,java,Java,如果我的数字超过8个字符,我想对其进行四舍五入 比如说, // Big number rounding using scientific notation double myDouble1 = 123456789;// desired output: 1.23e+08 另一种情况 // Rounding double myDouble2 = 12345.5678901234; // Desired output: 12345.57 我已尝试将String.format()与%.2g和%.7一
// Big number rounding using scientific notation
double myDouble1 = 123456789;// desired output: 1.23e+08
另一种情况
// Rounding
double myDouble2 = 12345.5678901234; // Desired output: 12345.57
我已尝试将String.format()
与%.2g
和%.7
一起使用,但无法获得所需的输出
这是我试图想出的代码
public String parseResult(String val){
String formatted = val;
try{
if(formatted.length() > 8){
double temp = Double.parseDouble(val);
if(temp % 1 == 0){
formatted = String.format("%.2g", temp);
}else{
formatted = String.format("%.7g", temp);
}
}
}
catch(NumberFormatException e)
{
}
return formatted;
}
公共类SolutionMain
{
公共静态void main(字符串[]args)
{
double myDouble1=123456789;//所需输出:1.23e+08
double myDouble2=12345.5678901234;//所需输出:12345.57
System.out.println(parseResult(myDouble1));
System.out.println(parseResult(myDouble2));
}
公共静态字符串解析结果(Double myDouble)
{
十进制格式=空;
如果(myDouble.toString().length()>8)
{
如果(myDouble%1==0)
格式=新的十进制格式(“0.00E00”);
其他的
格式=新的十进制格式(“0.00”);
}
返回格式。格式(myDouble);
}
}
有关更多模式格式详细信息:您可以使用DecimalFormatSymbols类创建自己的格式规则。我建议您看一下的“更改格式符号”部分
class ScientificNot
{
public static String getScientifiNotation(double n)
{
int n1=(int)n;
String s0=String.valueOf(n-(double)n1);
String s1=String.valueOf((double)((int)n));
int in=s1.indexOf(".");
String mantissa=null,exp=null;
if(n>=10000000.0)
{
if(s1.length()>8)
{
mantissa=s1.substring(0,3);
exp=s1.substring(3);
double man=Double.parseDouble(mantissa)/100.0;
return(man+"e"+exp.length());
}
else
return s1;
}
else if(s0.length()>8)
{
double num=(((double)((int)(n*1000))));
int dp=((int)num%1000);
if(dp%10>=5)
dp=(dp-(dp%10))+10;
return String.valueOf(((int)num/1000)+"."+(dp/10));
}
else{
s1=""+n;
}
return s1;
}
}