欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

自定义UDF函数:double数值转换成高精度BigDecimal

程序员文章站 2024-01-23 15:09:22
自定义UDF函数:double数值转换成高精度BigDecimal。 import java.math.BigDecimal; import org.apache.hadoop.hiv...

自定义UDF函数:double数值转换成高精度BigDecimal。

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