【问题标题】:I don't know how to implement math.round() or any other solution to get ##.## in JTextField我不知道如何实现 math.round() 或任何其他解决方案以在 JTextField 中获取 ##.##
【发布时间】:2014-02-04 14:32:13
【问题描述】:

我在JTextField 中显示平均值,我想将它四舍五入到小数点后两位以使用我上面的代码,使用JFreeChart 创建BarChart。我看过很多关于这方面的教程,但我不知道如何在我的代码中实现它。

这是我的清单:

List<Double> light = new ArrayList<Double>();
for (Measurement measurement : readMeasurements) {
light.add(Double.parseDouble(measurement.getLight()));}

double averageLight = Utils.calculateAverage(light);
textLight.setText(averageLight+" ...");

那是我计算平均值的Utils

public static double calculateAverage(List<Double> list){
        double av=0;
        double sum=0;

        for(double value : list){
            sum+=value;

        }
        av = sum/list.size();
        return av;
    }

这样我得到了像##.################这样的文本输出。

这里是 code that creates BarChart using JFreeChart. It works when inJTextFieldoutput is ##.## 的一部分:

String temperature = textTemp.getText();
String light = textLight.getText();
String vcc = textVcc.getText();

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(new Double (temperature), "Measurements", "Temperature");
dataset.setValue(new Double (light), "Measurements", "Light");
dataset.setValue(new Double (vcc), "Measurements", "Vcc");

如何对该代码进行任何更改以在JTextField 中输出,例如##.##

【问题讨论】:

    标签: java string swing jfreechart jtextfield


    【解决方案1】:

    您可以将decimal formatter 用于指定的模式。

    DecimalFormat df = new DecimalFormat("#,##0.00");
    textLight.setText(df.format(averageLight));
    

    如果您需要从文本字段中读取值,您可以使用相同的格式化程序来解析文本值。因此,您的文本值变得可读可写。注意处理 ParseException 和特定于语言环境的符号。

    【讨论】:

      【解决方案2】:

      NumberFormat 可能比 String.format 更好:

      NumberFormat nf = NumberFormat.getInstance();
      nf.setRoundingMode(RoundingMode.HALF_UP);
      nf.setMaximumFractionDigits(2);
      textLight.setText(String.format(nf.format(averageLight));
      

      如果您还有其他问题,请发表评论。

      【讨论】:

      • 使用您的代码先生,我没有阅读 3 个 JTextBox 中的最后一个。但是 Roman C 效果很好!谢谢大家这么回复!
      【解决方案3】:
      textLight.setText(String.format("%.2f", averageLight));
      

      "%.2f" 是一个格式字符串,意思是“将参数格式化为带两位小数的浮点数”。有关您可以在其中一个字符中使用哪些字符以及它们各自的含义的更多详细信息,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

      【讨论】:

      • 在实施您的建议后,我的 STAX 解析器正在将 XML 显示到 Textarea 中,但它停止在 JTextField 中显示/计算平均值。有什么建议吗?感谢您的快速回复! (f != java.lang.String)
      • 您仍需致电calculateAverage。你在这样做吗?
      • 是的,我在一段时间后弄明白了!
      猜你喜欢
      • 2011-03-14
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多