import java.math.BigDecimal;
import org.apache.hadoop.hive.ql.exec.UDF;
/*
 * 该方法是返回double类型的数值的BigDecimal类型的对应值,这里返回的样式是字符串类型
 */
public class UDFCastDouble  extends UDF
{
    public String evaluate(Double number)
    {  
    	//doubleValue()是求double类型的原始值,因为number是Double的封装类对象,不是值
        BigDecimal db = new BigDecimal(number.doubleValue());
        //toPlainString()方法是BigDecimal中返回不带指数字段的字符串类型值
        String stringNumber = db.toPlainString();
        return stringNumber;
       
    }
    //使用main方法测试
    public static void main(String[] args) throws Exception
    {
        UDFCastDouble o = new UDFCastDouble();

        System.out.println(o.evaluate(2.001));
        System.out.println(o.evaluate(2.00));
    }
}
//测试结果:
2.000999999999999889865875957184471189975738525390625
2