1

所以我有这个代码

    BigDecimal bd = new BigDecimal(i);
    bd = bd.round(new MathContext(6));
    double meters = bd.doubleValue();
    double km = bd.doubleValue()*0.001;
    double cm = bd.doubleValue()*100;
    double mm = bd.doubleValue()*1000;
    double miles = bd.doubleValue()*0.000621371192;
    double inches = bd.doubleValue()*39.3700787;
    double feet = bd.doubleValue()*3.2808399;
    double yards = bd.doubleValue()*1.0936133;
    double points = bd.doubleValue()*2834.64567;

所以我在这里找到了一个例子,告诉我这样做

    BigDecimal bd = new BigDecimal(i);
    bd = bd.round(new MathContext(6));
    double meters = bd.doubleValue();

这就是我尝试的方法,它以米为单位,但英寸、英尺、码等数字不会四舍五入。我做错了吗?解决这个问题的正确方法是什么?

编辑:好的,所以我发现了一些有用的东西,以防其他人遇到问题,而不是使用:

double points = bd.doubleValue()*2834.64567;

我这样做了:

BigDecimal points = new BigDecimal(i*2834.64567);
points = points.round(new MathContext(6));
4

1 回答 1

0

您可以使用 BigDecimal;例如:

double d = 15.3343243;
        BigDecimal bd = new BigDecimal(d);
        bd = bd.setScale(2, BigDecimal.ROUND_CEILING);
        bd = new BigDecimal(0.001 * bd.doubleValue());
        d = bd.doubleValue();
        System.out.println(d);

或没有 BigDecimal 对象:

        System.out.println((double)((int) (d * 1000)) / 1000);
于 2012-04-07T09:17:43.940 回答