Example usage for java.lang StrictMath round

List of usage examples for java.lang StrictMath round

Introduction

In this page you can find the example usage for java.lang StrictMath round.

Prototype

public static long round(double a) 

Source Link

Document

Returns the closest long to the argument, with ties rounding to positive infinity.

Usage

From source file:Main.java

public static void main(String[] args) {

    double d1 = 12.34, d2 = 56.78;

    System.out.println("closest long value to " + d1 + " = " + StrictMath.round(d1));

    System.out.println("closest long value to " + d2 + " = " + StrictMath.round(d2));
}

From source file:Main.java

public static void main(String[] args) {

    float f1 = 12.34f, f2 = 56.78f;

    System.out.println("closest int value to " + f1 + " = " + StrictMath.round(f1));

    System.out.println("closest int value to " + f2 + " = " + StrictMath.round(f2));
}

From source file:net.sourceforge.fenixedu.dataTransferObject.inquiries.QuestionResultsSummaryBean.java

public String getPresentationValue() {
    if (getQuestionResult() != null) {
        if (InquiryResultType.PERCENTAGE.equals(getQuestionResult().getResultType())) {
            Double value = Double.valueOf(getQuestionResult().getValue()) * 100;
            int roundedValue = (int) StrictMath.round(value);
            return String.valueOf(roundedValue);
        }// w  ww  . jav  a 2  s .c o  m
        return getQuestionResult().getValue();
    }
    return "";
}

From source file:net.sourceforge.fenixedu.presentationTier.renderers.inquiries.InquiryGroupResultsResumeRenderer.java

protected HtmlComponent renderCheckboxGroups(GroupResultsSummaryBean groupResultsSummaryBean) {
    HtmlBlockContainer blockContainer = new HtmlBlockContainer();
    String groupTitle = null;//from  w ww .  j  av  a  2s. com
    if (groupResultsSummaryBean.getInquiryGroupQuestion().getResultQuestionHeader() != null) {
        groupTitle = groupResultsSummaryBean.getInquiryGroupQuestion().getResultQuestionHeader().getTitle()
                .toString();
    } else {
        groupTitle = groupResultsSummaryBean.getInquiryGroupQuestion().getInquiryQuestionHeader().getTitle()
                .toString();
    }
    HtmlText groupTitleText = new HtmlText("<p><strong>" + groupTitle + "</strong></p>");
    groupTitleText.setEscaped(false);
    blockContainer.addChild(groupTitleText);

    HtmlBlockContainer innerContainer = new HtmlBlockContainer();
    innerContainer.setClasses("graph");
    final HtmlTable mainTable = new HtmlTable();
    mainTable.setClasses("graph");

    setTotalAnswers(groupResultsSummaryBean, mainTable);

    for (QuestionResultsSummaryBean questionResultsSummaryBean : groupResultsSummaryBean
            .getQuestionsResults()) {
        HtmlTableRow row = mainTable.createRow();
        HtmlTableCell nameCell = row.createCell(CellType.HEADER);
        nameCell.setBody(new HtmlText(questionResultsSummaryBean.getInquiryQuestion().getLabel().toString()));
        HtmlTableCell valueCell = row.createCell();
        valueCell.setStyle("width: 110px;");
        Double value = 0.0;
        if (questionResultsSummaryBean.getResultClassification() == null) {
            value = Double.valueOf(questionResultsSummaryBean.getQuestionResult().getValue()) * 100.0;
        }
        int roundedValue = (int) StrictMath.round(value);
        HtmlText body = new HtmlText("<div style=\"width: " + ((roundedValue * 2) + 40)
                + "px;\"><div class=\"graph-bar-horz\" style=\"width:" + roundedValue * 2
                + "px;\"></div><div class=\"graph-bar-horz-number\">" + roundedValue + "%</div></div>");
        body.setEscaped(false);
        valueCell.setBody(body);
    }
    innerContainer.addChild(mainTable);
    blockContainer.addChild(innerContainer);
    return blockContainer;
}

From source file:weka.gui.beans.JFreeChartOffscreenChartRenderer.java

/**
 * Render histogram(s) (numeric attribute) or bar chart (nominal attribute).
 * Some implementations may not be able to render more than one histogram/bar
 * on the same chart - the implementation can either throw an exception or
 * just process the first series in this case.
 * //from   ww w.  ja v a 2  s  . c o  m
 * @param width the width of the resulting chart in pixels
 * @param height the height of the resulting chart in pixels
 * @param series a list of Instances - one for each series to be plotted
 * @param attsToPlot the attribute to plot corresponding to the Instances in
 *          the series list
 * @param optionalArgs optional arguments to the renderer (may be null)
 * 
 * @return a BufferedImage containing the chart
 * @throws Exception if there is a problem rendering the chart
 */
public BufferedImage renderHistogram(int width, int height, List<Instances> series, String attToPlot,
        List<String> additionalArgs) throws Exception {

    String plotTitle = "Bar Chart";
    String userTitle = getOption(additionalArgs, "-title");
    plotTitle = (userTitle != null) ? userTitle : plotTitle;
    String colorAtt = getOption(additionalArgs, "-color");
    String pareto = getOption(additionalArgs, "-pareto");

    boolean doPareto = false;
    if (pareto != null && pareto.length() == 0 && series.size() == 1) {
        doPareto = true;
    }

    if (series.size() == 1 && colorAtt != null && colorAtt.length() > 0) {
        int colIndex = getIndexOfAttribute(series.get(0), colorAtt);

        if (colIndex >= 0 && series.get(0).attribute(colIndex).isNominal() && !doPareto) {
            // split single series out into multiple instances objects - one
            // per class
            series = splitToClasses(series.get(0), colIndex);
            for (Instances insts : series) {
                insts.setClassIndex(colIndex);
            }
        }
    }

    Instances masterInstances = series.get(0);
    int attIndex = getIndexOfAttribute(masterInstances, attToPlot);
    if (attIndex < 0) {
        attIndex = 0;
    }

    if (!(series.get(0).attribute(attIndex).isNominal()
            || series.get(0).attribute(attIndex).isRelationValued())) {
        doPareto = false;
    }

    // Do a pareto chart
    if (doPareto) {
        final DefaultKeyedValues data = new DefaultKeyedValues();
        AttributeStats attStats = masterInstances.attributeStats(attIndex);
        double[] attValFreqs = attStats.nominalWeights;
        for (int i = 0; i < attValFreqs.length; i++) {
            Number freq = new Double(attValFreqs[i]);
            data.addValue(masterInstances.attribute(attIndex).value(i), freq);
        }

        data.sortByValues(SortOrder.DESCENDING);
        final KeyedValues cumulative = DataUtilities.getCumulativePercentages(data);
        final CategoryDataset dataset = DatasetUtilities
                .createCategoryDataset(masterInstances.attribute(attIndex).name(), data);

        final JFreeChart chart = ChartFactory.createBarChart(plotTitle,
                masterInstances.attribute(attIndex).name(), "Fequency/weight mass", dataset,
                PlotOrientation.VERTICAL, true, false, false);

        final CategoryPlot plot = chart.getCategoryPlot();

        final CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setLowerMargin(0.02);
        domainAxis.setUpperMargin(0.02);

        LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
        CategoryDataset dataset2 = DatasetUtilities.createCategoryDataset("Cumulative", cumulative);
        final NumberAxis axis2 = new NumberAxis("Percent");
        axis2.setNumberFormatOverride(NumberFormat.getPercentInstance());
        // plot.
        plot.setRangeAxis(1, axis2);
        plot.setDataset(1, dataset2);
        plot.setRenderer(1, renderer2);
        plot.mapDatasetToRangeAxis(1, 1);
        plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);

        chart.setBackgroundPaint(java.awt.Color.white);
        BufferedImage image = chart.createBufferedImage(width, height);
        return image;
    }

    boolean seriesAreClasses = false;
    int classIndex = masterInstances.classIndex();

    if (classIndex >= 0 && !masterInstances.attribute(classIndex).isNumeric()
            && !masterInstances.attribute(classIndex).isRelationValued()
            && masterInstances.attributeStats(classIndex).distinctCount == 1) {
        // series correspond to class labels (assume that subsequent series only
        // contain instances of one class)...
        seriesAreClasses = true;
    }

    // bar chart for a nominal attribute
    if (masterInstances.attribute(attIndex).isNominal() || masterInstances.attribute(attIndex).isString()) {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        // do the master series
        String masterSeriesTitle = masterInstances.relationName();
        if (seriesAreClasses) {
            for (int i = 0; i < masterInstances.numInstances(); i++) {
                Instance current = masterInstances.instance(i);
                if (!current.isMissing(classIndex)) {
                    masterSeriesTitle = current.stringValue(classIndex);
                    break;
                }
            }
        }

        AttributeStats attStats = masterInstances.attributeStats(attIndex);
        double[] attValFreqs = attStats.nominalWeights;
        for (int i = 0; i < attValFreqs.length; i++) {
            Number freq = new Double(attValFreqs[i]);
            dataset.addValue(freq, masterSeriesTitle, masterInstances.attribute(attIndex).value(i));
        }

        // any subsequent series
        for (int i = 1; i < series.size(); i++) {
            Instances nextSeries = series.get(i);

            String seriesTitle = nextSeries.relationName();

            if (seriesAreClasses) {
                for (int j = 0; j < nextSeries.numInstances(); j++) {
                    Instance current = nextSeries.instance(j);
                    if (!current.isMissing(classIndex)) {
                        seriesTitle = current.stringValue(classIndex);
                        break;
                    }
                }

                attStats = nextSeries.attributeStats(attIndex);
                attValFreqs = attStats.nominalWeights;
                for (int j = 0; j < attValFreqs.length; j++) {
                    Number freq = new Double(attValFreqs[j]);
                    dataset.addValue(freq, seriesTitle, nextSeries.attribute(attIndex).value(j));
                }
            }
        }

        JFreeChart chart = null;

        if (series.size() == 1) {
            chart = ChartFactory.createBarChart(plotTitle, masterInstances.attribute(attIndex).name(),
                    "Fequency/weight mass", dataset, PlotOrientation.VERTICAL, true, false, false);
        } else {
            chart = ChartFactory.createStackedBarChart(plotTitle, masterInstances.attribute(attIndex).name(),
                    "Fequency/weight mass", dataset, PlotOrientation.VERTICAL, true, false, false);
        }

        chart.setBackgroundPaint(java.awt.Color.white);
        BufferedImage image = chart.createBufferedImage(width, height);
        return image;

    } else {
        // histogram for numeric attributes
        HistogramDataset dataset = new HistogramDataset();

        // combine all series in order to get overall std dev, and range
        Instances temp = new Instances(masterInstances);
        for (int i = 1; i < series.size(); i++) {
            Instances additional = series.get(i);
            for (Instance tempI : additional) {
                temp.add(tempI);
            }
        }

        AttributeStats stats = temp.attributeStats(attIndex);
        Stats numericStats = stats.numericStats;
        double intervalWidth = 3.49 * numericStats.stdDev * StrictMath.pow(temp.numInstances(), (-1.0 / 3.0));
        double range = numericStats.max - numericStats.min;
        int numBins = StrictMath.max(1, (int) StrictMath.round(range / intervalWidth));

        // do the master series
        String masterSeriesTitle = masterInstances.relationName();
        if (seriesAreClasses) {
            for (int i = 0; i < masterInstances.numInstances(); i++) {
                Instance current = masterInstances.instance(i);
                if (!current.isMissing(current.classAttribute())) {
                    masterSeriesTitle = current.stringValue(current.classAttribute());
                    break;
                }
            }
        }

        // have to set min, max and num bins (using heuristic from AttSummPanel).
        // Make sure
        // to set series length to num instances - num missing values for att
        stats = masterInstances.attributeStats(attIndex);
        /*
         * numericStats = stats.numericStats; //numericStats.calculateDerived();
         * intervalWidth = StrictMath.max(1, 3.49 * numericStats.stdDev *
         * StrictMath.pow(masterInstances.numInstances(), (-1.0/3.0)));
         */

        double[] seriesVals = new double[masterInstances.numInstances() - stats.missingCount];
        int count = 0;
        for (int i = 0; i < masterInstances.numInstances(); i++) {
            Instance current = masterInstances.instance(i);
            if (!current.isMissing(attIndex)) {
                seriesVals[count++] = current.value(attIndex);
            }
        }

        dataset.addSeries(masterSeriesTitle, seriesVals, numBins, numericStats.min, numericStats.max);

        // any subsequent series
        for (int i = 1; i < series.size(); i++) {
            Instances nextSeries = series.get(i);

            String seriesTitle = nextSeries.relationName();

            if (seriesAreClasses) {
                for (int j = 0; j < nextSeries.numInstances(); j++) {
                    Instance current = nextSeries.instance(j);
                    if (!current.isMissing(nextSeries.classAttribute())) {
                        seriesTitle = current.stringValue(nextSeries.classAttribute());
                        break;
                    }
                }
            }

            stats = nextSeries.attributeStats(attIndex);
            /*
             * numericStats = stats.numericStats; //
             * numericStats.calculateDerived(); intervalWidth = StrictMath.max(1,
             * 3.49 * numericStats.stdDev *
             * StrictMath.pow(masterInstances.numInstances(), (-1.0/3.0))); range =
             * numericStats.max - numericStats.min; numBins = StrictMath.max(1,
             * (int) StrictMath.round(range / intervalWidth));
             */
            seriesVals = new double[nextSeries.numInstances() - stats.missingCount];
            count = 0;
            for (int j = 0; j < nextSeries.numInstances(); j++) {
                Instance current = nextSeries.instance(j);
                if (!current.isMissing(attIndex)) {
                    seriesVals[count++] = current.value(attIndex);
                }
            }

            dataset.addSeries(seriesTitle, seriesVals, numBins, numericStats.min, numericStats.max);
        }

        JFreeChart chart = ChartFactory.createHistogram(plotTitle, masterInstances.attribute(attIndex).name(),
                null, dataset, PlotOrientation.VERTICAL, true, false, false);

        // chart.setBackgroundPaint(java.awt.Color.white);
        XYPlot xyplot = (XYPlot) chart.getPlot();
        xyplot.setForegroundAlpha(0.50F);
        XYBarRenderer xybarrenderer = (XYBarRenderer) xyplot.getRenderer();
        xybarrenderer.setDrawBarOutline(false);
        xybarrenderer.setShadowVisible(false);

        BufferedImage image = chart.createBufferedImage(width, height);
        return image;
    }
}

From source file:net.sourceforge.fenixedu.domain.inquiries.InquiryResult.java

public String getPresentationValue() {
    if (InquiryResultType.PERCENTAGE.equals(getResultType())) {
        Double value = Double.valueOf(getValue()) * 100;
        int roundedValue = (int) StrictMath.round(value);
        return String.valueOf(roundedValue);
    }//from   w  ww .  j  av a  2 s  .  c  om
    return getValue();
}

From source file:net.sourceforge.fenixedu.presentationTier.renderers.inquiries.InquiryGroupResultsResumeRenderer.java

private void renderColoredTable(int absoluteScaleSize, QuestionResultsSummaryBean questionResultsSummaryBean,
        HtmlTableRow row, HtmlTableCell medianCell, int medianClass) {
    HtmlText medianText = new HtmlText("<b>" + questionResultsSummaryBean.getMedian().getValue() + "</b>");
    medianText.setEscaped(false);/*from   w w  w . ja  v  a 2s.c o  m*/
    medianCell.setBody(medianText);
    medianCell.setClasses("x" + medianClass);

    int colClassesIter = absoluteScaleSize;
    for (InquiryResult inquiryResult : questionResultsSummaryBean.getAbsoluteScaleValues()) {
        HtmlTableCell absoluteValueCell = row.createCell();
        absoluteValueCell.setBody(new HtmlText(inquiryResult.getValue()));
        absoluteValueCell.setClasses("x" + colClassesIter);
        colClassesIter--;
    }

    HtmlTableCell scaleCells = row.createCell();
    final HtmlTable scaleTable = new HtmlTable();
    scaleCells.setBody(scaleTable);
    HtmlTableRow scaleRow = scaleTable.createRow();
    NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.getDefault());
    numberFormat.setMaximumFractionDigits(2);
    String div = "<div class=\"graph-bar-1" + questionResultsSummaryBean.getScaleValues().size() + "-";
    double scaleProportion = 100.0 / questionResultsSummaryBean.getScaleValues().size();
    int iter = 1;
    int firstCell = 1;
    for (InquiryResult inquiryResult : questionResultsSummaryBean.getScaleValues()) {
        HtmlTableCell scaleCell = scaleRow.createCell();
        Double value = Double.valueOf(inquiryResult.getValue()) * 100.0;
        int roundedValue = (int) StrictMath.round(value);
        String extraBarClass = "";
        if (iter == firstCell) {
            if (roundedValue != 0) {
                extraBarClass = " first-bar";
            } else {
                firstCell++;
            }
        }
        String finalDiv = div + iter + extraBarClass + "\">" + roundedValue + "%</div>";
        if ((roundedValue / scaleProportion) <= proportionBar) {
            finalDiv = div + iter + extraBarClass + "\"></div>";
        }

        HtmlText divText = new HtmlText(finalDiv);
        divText.setEscaped(false);
        scaleCell.setBody(divText);
        scaleCell.setStyle(roundedValue != 0 ? "width: " + roundedValue + "%;" : "display: none;");
        iter++;
    }
    setLastBarCellClass(scaleRow);
}