2014-03-02 72 views
0

我知道这是一个简单的任务,但我认为我只是在格式化方面遇到问题。我可以通过GUI输入框索要一个8位小数的数字,但对于输出框我无法弄清楚如何将用户输入的数字舍入到5和3位小数。这是我卡上:使用GUI输出框舍入到不同的小数位

import javax.swing.JOptionPane; 

public class Ch3Assignment6 { 

    public static void main(String[] args) { 

     String Decimal_Eight = JOptionPane.showInputDialog ("Enter a decimal number with eight decimal places");   


     JOptionPane.showMessageDialog (null, 
     "The number you entered is: " + Decimal_Eight + "\n" + 
     "The number rounded to 5 decimal places is: " + String.format("%.5f", Decimal_Eight) + "\n" + 
     "The number rounded to 3 decimal places is: " + String.format("%.3f", Decimal_Eight)); 

    } 

} 

它显示一个错误信息/无输出消息框,但我不知道我是如何正确进入旋绕部。谢谢!

回答

1

您应用的字符串格式适用于浮点而不是字符串。尝试将它解析为双第一:

String input = JOptionPane.showInputDialog("Enter a decimal number with eight decimal places"); 
double Decimal_Eight = Double.parseDouble(input);   
1

除了@MartijinCourteaux答案(+1),你也可以使用NumberFormat类直接作出调整了一些如何格式化......

double value = 123.456789; 
NumberFormat nf = NumberFormat.getNumberInstance(); 
nf.setMaximumFractionDigits(5); 
System.out.println(nf.format(value)); 
nf.setMaximumFractionDigits(3); 
System.out.println(nf.format(value)); 

,输出...

123.45679 
123.457 

现在,很明显,我已经开始与一个double,如果你有String,你只需要在以下@MartijnCourt eaux的答案解析值为double ...