我不知道如何实现 math.round() 或任何其他解决方案来在 JTextField 中获取 ##.##

问题描述 投票:0回答:3

我在

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

这是我的清单:

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;
    }

这样我就可以得到像

##.################
这样的文本文件输出。

这是 cod 的一部分

e that creates BarChart using JFreeChart. It works when in 
JTextField
 output 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
3个回答
5
投票
textLight.setText(String.format("%.2f", averageLight));

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


2
投票

您可以使用十进制格式化程序来指定模式。

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

如果您需要从文本字段读取值,您可以使用相同的格式化程序来解析文本值。因此,您的文本值变得可读可写。请注意处理

ParseException
和区域设置特定符号。


0
投票
为此,

NumberFormat 可能比 String.format 更好:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.