If I pass just v1 and v2 to their respective constructors the result is 2.3000000000000000000000000000000000000000032342 something like this. But if I transform the argument into a string, for both constructors, then the result is 2.3. Where does this come from?
public class Solution {
    public static void main(String[] args) {
        System.out.println(getValue(1.1d, 1.2d));
    }

    public static BigDecimal getValue(double v1, double v2) {
        return new BigDecimal(v1+"").add(new BigDecimal(v2+""));
    }