Java 从不同的双倍数计算

Java 从不同的双倍数计算,java,function,double,Java,Function,Double,我有一个问题,关于如何从不同的双精度计算 比如说 我有三种类型的双重数据 price (x, y, z) 1. Double type1 = 1.67876 2. Double type2 = 129.789 3.Double type3 = 1278.79 我想用10作为逗号后的2位数的最后一个数字来计算所有的双精度类型 如果逗号后有5位数字,则函数将为 Double returnY = type2-0.010; Double returnY = type3-0.1

我有一个问题,关于如何从不同的双精度计算

比如说

我有三种类型的双重数据

price (x, y, z)
    1. Double type1 = 1.67876
    2. Double type2 = 129.789
    3.Double type3 = 1278.79
我想用10作为逗号后的2位数的最后一个数字来计算所有的双精度类型 如果逗号后有5位数字,则函数将为

Double returnY = type2-0.010;
Double returnY = type3-0.10;
比如说

Double returnX = type1-0.00010;
如果逗号后有3位数字,则函数将

Double returnY = type2-0.010;
Double returnY = type3-0.10;
如果逗号后有2个数字,则函数将

Double returnY = type2-0.010;
Double returnY = type3-0.10;

那么,如何为这一点制定逻辑呢

它可以这样实现:

static double reduce(double x) {
    double res = x;
    String s = "" + x;
    int posDot = s.indexOf(".");
    if (posDot > -1) {
        int fractionWidth = s.length() - posDot - 1;
        double reduceAmount = 1;
        while (fractionWidth-- > 1) {
            reduceAmount *= 0.1;
        }
        res = x - reduceAmount;
    }
    return res;
}

既然你提到了价格,你就不应该用double作为货币。您应该使用int、long或BigDecimal。