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