Here you can find the source of getBigDecimalOrNull(Object value)
public static BigDecimal getBigDecimalOrNull(Object value)
//package com.java2s; /*//from w w w . j av a2 s . c om * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.math.BigDecimal; import java.math.BigInteger; import java.math.MathContext; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; public class Main { public static BigDecimal getBigDecimalOrNull(Object value) { if (!(value instanceof Number || value instanceof String)) { return null; } if (!BigDecimal.class.isAssignableFrom(value.getClass())) { if (value instanceof Long || value instanceof Integer || value instanceof Short || value instanceof Byte || value instanceof AtomicLong || value instanceof AtomicInteger) { value = new BigDecimal(((Number) value).longValue(), MathContext.DECIMAL128); } else if (value instanceof BigInteger) { value = new BigDecimal(((BigInteger) value).toString(), MathContext.DECIMAL128); } else if (value instanceof String) { // we need to remove leading zeros to prevent octal conversion value = new BigDecimal(((String) value).replaceFirst("^0+(?!$)", ""), MathContext.DECIMAL128); } else { value = new BigDecimal(((Number) value).doubleValue(), MathContext.DECIMAL128); } } return (BigDecimal) value; } }