精华内容
下载资源
问答
  • 2018-06-19 11:07:18
    有方法   java.math.BigDecimal.doubleValue()
    
    BigDecimal a = new BigDecimal(1000);
    return a.doubleValue();





    1.  public static void printDoubleToBigDecimal(double v1, double v2){  
    2.         BigDecimal d1TobigDe = new BigDecimal(v1);  
    3.         BigDecimal d2TobigDe = new BigDecimal(v2);  
    4.         System.out.println("d1TobigDe="+d1TobigDe);  
    5.         System.out.println("d2TobigDe="+d2TobigDe);  
    6.     } 

    更多相关内容
  • 1、JSP中BigDecimal转换成double BigDecimal转换成double 在数据库中字段的类型为decimal(数字,数字),在JSP程序中要把它转换成double型的方法是: ((java.math.BigDecimal)row.get("数据库中字段")).double...

    这些是网上抄袭行为不是原创留下自用的未经测试不能尽信


    1、JSP中BigDecimal转换成double

    BigDecimal转换成double

    在数据库中字段的类型为decimal(数字,数字),在JSP程序中要把它转换成double型的方法是: ((java.math.BigDecimal)row.get("数据库中字段")).doubleValue()


    注:row是Map的对象。row.get("数据库中字段")得到的类型是Object,要先转换成与数据库类型相对应的decimal后,再转换成double.


    2、BigDecimal用法详解


    在我现在进行的项目中用到这种类型,用它来表示金额。可这种类型非常精确,当你在数据库里插入一条数据是6.00时,在显示时却是6.000000000000000000000。在页面显示非常不美观。在网上找了找,还真的找到了解决办法拿来和大家分享一下,在以后做系统时可以用到。它不仅可以做到double和float,而且在商业计算上也能显示它的作用。

    java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:

  • 第一种:BigDecimal(double val)
    Translates a double into a BigDecimal.

  • 第二种:BigDecimal(String val)
    Translates the String repre sentation of a BigDecimal into a BigDecimal.

  • 使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。

    public static double add(double v1,double v2)
    public static double sub(double v1,double v2)
    public static double mul(double v1,double v2)
    public static double div(double v1,double v2)
    public static double div(double v1,double v2,int scale)
    public static double round(double v,int scale)
    附录
    源文件Arith.java:
    import java.math.BigDecimal;
    /**
    * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
    * 确的浮点数运算,包括加减乘除和四舍五入。
    */
    public class Arith{ //默认除法运算精度
    private static final int DEF_DIV_SCALE = 10; //这个类不能实例化
    private Arith(){
    }
    /**
    * 提供精确的加法运算。
    * @param v1 被加数
    * @param v2 加数
    * @return 两个参数的和
    */
    public static double add(double v1,double v2){
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.add(b2).doubleValue();
    }
    /**
    * 提供精确的减法运算。
    * @param v1 被减数
    * @param v2 减数
    * @return 两个参数的差
    */
    public static double sub(double v1,double v2){
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.subtract(b2).doubleValue();
    }
    /**
    * 提供精确的乘法运算。
    * @param v1 被乘数
    * @param v2 乘数
    * @return 两个参数的积
    */
    public static double mul(double v1,double v2){
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.multiply(b2).doubleValue();
    }
    /**
    * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
    * 小数点以后10位,以后的数字四舍五入。
    * @param v1 被除数
    * @param v2 除数
    * @return 两个参数的商
    */
    public static double div(double v1,double v2){
    return div(v1,v2,DEF_DIV_SCALE);
    }
    /**
    * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
    * 定精度,以后的数字四舍五入。
    * @param v1 被除数
    * @param v2 除数
    * @param scale 表示表示需要精确到小数点以后几位。
    * @return 两个参数的商
    */
    public static double div(double v1,double v2,int scale){
    if(scale<0){
    throw new IllegalArgumentException(
    "The scale must be a positive integer or zero");
    }
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    /**
    * 提供精确的小数位四舍五入处理。
    * @param v 需要四舍五入的数字
    * @param scale 小数点后保留几位
    * @return 四舍五入后的结果
    */
    public static double round(double v,int scale){
    if(scale<0){
    throw new IllegalArgumentException("The scale must be a positive integer or zero");
    }
    BigDecimal b = new BigDecimal(Double.toString(v));
    BigDecimal one = new BigDecimal("1");
    return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    };


    3、注意double不能强制转BigDecimal

    public class Test {
    	public static void main(String args[]) {
    		double b_OLD = 4.1625;
    		java.math.BigDecimal bd1 = new java.math.BigDecimal( b_OLD );
    		System.out.println("BEFORE ROUNDING: " + bd1);
    	}
    }
    
    可以用double类型初始化BigDecimal类。
    追问
    那为什么
            double  b = 4.44;
                  java.math.BigDecimal  big = (java.math.BigDecimal )b;
    这样不能转换呢? 有什么区别吗?
    回答
    因为double是基本数据类型,不可以强制类型转换的。强制类型转换是针对Object的。Double b = 4.44; 这样也是不行的,因为BigDecimal没有从Double继承,所以没有办法强制类型转换。

    展开全文
  • BigDecimal double

    2015-08-11 14:37:00
    NUMBER(20,2) 数据库里的字段number ,实体是BigDecimal ...将BigDecimal成double public double getOrderamount() { if (orderamount != null) { BigDecimal b2 = new BigDecimal(100); re...

    NUMBER(20,2)

    数据库里的字段number  ,实体是BigDecimal

    将BigDecimal转成double

    public double getOrderamount() {

            if (orderamount != null) {

                BigDecimal b2 = new BigDecimal(100);

                return orderamount.divide(b2, 2, BigDecimal.ROUND_HALF_DOWN).doubleValue();

            }else{

              return 0.00;// orderamount数据库里为null的话, //orderamount.doubleValue();就会报错,NULL是转换不了double类型的

             //return orderamount.doubleValue();

            }

    说明:::::::::::::

    BigDecimal.divide();除法

    MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);//指定精度
    //精度为2,舍入模式为大于0.5进1,否则舍弃。
    BigDecimal a = new BigDecimal(0.5);
    BigDecimal b = new BigDecimal(0.2);
    System.out.println(a.divide(b,mc));//输出结果是2.5,如果没有指定精度的话,divide会报错

    错误信息:
    Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

    转载于:https://www.cnblogs.com/hanxue112253/p/4720962.html

    展开全文
  • BigDecimalDouble转换

    2017-06-22 16:44:45
    BigDecimalDouble转换
  • BigDecimal类型和double类型的值相互转换 1.BigDecimaldouble,使用BigDecimal类里面doubleValue()方法: BigDecimal latitude = 39.97268600; double latitudeDou = latitude.doubleValue() 2.double转...

    BigDecimal类型和double类型的值相互转换

    1.BigDecimal转double,使用BigDecimal类里面doubleValue()方法:

    BigDecimal latitude = 39.97268600;
    double latitudeDou = latitude.doubleValue()
    

    2.double转BigDecimal,使用BigDecimal类里面valueOf()方法:

    double latitudeDou = 39.97268600;
    BigDecimal latitude = BigDecimal.valueOf(latitudeDou);
    
    展开全文
  • BigDecimal大据类。 浮点型运算的时候直接 加减乘除时可能会出现数据失真(精度问题)。 BigDecimal可以解决浮点型运算数据失真的问题。 double a = 0.1; double b = 0.2; double c = a+b; System.out.println(c);...
  • Double转换成BigDecimal进行运算的整理

    千次阅读 2019-01-15 16:59:19
    Double转换成BigDecimal进行运算的整理 由于double进行加减乘除运算容易丢失精度,所以一般把double转换成BigDecimal进行调用BigDecimal的加减乘除方法进行运算之后在转成double类型 BigDecimal的运算(加减乘除)...
  • 使用BigDecimal解决double类型数据运算的精度问题
  • 下面小编就为大家带来一篇java中double转化BigDecimal精度缺失的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。BigDecimal类的常用方法如表11-15所示。 表11-15 ...
  • 会要求小数点后精确到几位数,例如涉及到费用的问题,通常会让我们精确到小数点后4位,就类似于“0.3333”的格式,当我们在想要进行精确到小数点后几位时,这时候就会想到BigDeimal对象来进行转化,不过在进行转化的...
  • 有方法 java.math.BigDecimal.doubleValue()BigDecimal a = new BigDecimal(1000); return a.doubleValue();
  • Double转换成BigDecimal进行运算

    千次阅读 2019-10-18 17:51:46
    由于double进行加减乘除运算容易丢失精度,所以一般把double转换成BigDecimal进行调用BigDecimal的加减乘除方法进行运算之后在转成double类型 BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = ...
  • 今天写代码过程中,发现一个Double的变量通过new BigDecimal(Double d)转换BigDecimal时,有效数字改变了,如下: public class BigDecimalTest { public static void main(String[] arg) { String s1 = "123....
  • Java中doubleBigDecimal的注意事项

    万次阅读 多人点赞 2018-08-10 16:01:20
    先上结论:不要直接用double变量作为构造BigDecimal的参数。   线上有这么一段Java代码逻辑: 1,接口传来一个JSON串,里面有个数字:57.3。 2,解析JSON并把这个数字保存在一个float变量。 3,把这个float...
  • I am working with an application that is based entirely on doubles, and am having trouble in one utility method that parses a string into a double. I've found a fix where using BigDecimal for the con....
  • https://blog.csdn.net/fzy629442466/article/details/85765944?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCom...
  • BigDecimaldouble转换遇到的问题

    千次阅读 2021-04-27 09:05:43
    Bigdecimal 类型值为0.00006时转成Double会变成科学计数法 /** * 取消科学计数法 */ public String getPrincipal(Double principal){ NumberFormat nf = NumberFormat.getInstance(); //设置保留多少位小数 nf....
  • ​ 我最近在公司遇到了一个bug,因为项目中涉及到了...打断点后,可发现double类型数据转Decimal时精度丢失,因此不能使用此构造方法进行转换。 解决Double类型在BigDecimal中精度丢失问题,使用string类型的构造...
  • 解决Double类型在BigDecimal中精度丢失问题        最近在新公司遇到了一个bug,因为项目中涉及到了和金额相关的业务,所以就接触到了 BigDecimal 高精度类型,在处理BUG中遇到了...
  • 但是对于double和float这类小数来说,不是所有的十进制数都能转化为有限位二进制数的,也就是十进制整数在转化成二进制数时会有精度问题,常会使用近似值替代原小数完成运算,这就导致使用double和floa进行计算可能...
  • 1,保留6位小数点NumberFormat format = NumberFormat.getInstance();...String s= format.format(double/BigDecimal); DecimalFormat df = new DecimalFormat("0.000000"); String ss= ...
  • 1.BigDecimal(double val): 失真, 不要使用 BigDecimal(0.1)的值是: 0.1000000000000000055511151231257827021181583404541015625  因为准确的来说0.1本身不能算是一个double(其实0.1不能代表任何一个定长二...
  • bigdecimaldouble运算

    2021-02-24 09:08:11
    bigdecimaldouble运算 https://www.cnblogs.com/liuyk-code/p/6693002.html
  • Java中DoubleBigDecimal的相互转换

    千次阅读 2021-03-08 07:10:15
    今天写代码过程中,发现一个Double的变量通过new BigDecimal(Double d)转换BigDecimal时,有效数字改变了,如下:public class BigDecimalTest {public static void main(String[] arg) {String s1 = "123.45";...
  • **禁止使用构造方法 BigDecimal(double)的方式把 double转化BigDecimal 对象** **正例:**优先推荐入参为 String 的构造方法,或使用 BigDecimal 的 valueOf 方法,此方法内部其实执行了Double 的 toString,...
  • BigDecimal b = new BigDecimal(webResponse.getGmv()); webResponse.setGmv(b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
  • Double数据转化BigDecimal,保证精度

    千次阅读 2020-06-07 12:16:11
    这是因为 0.1 无法准确地表示为 double。这样,传入到构造方法的值不会正好等于 0.1(虽然表面上等于该值)。 另一方面,String 构造方法是完全可预知的:写入 new BigDecimal(“0.1”) 将创建一个 BigDecimal,它...
  • Java中doubleBigDecimal

    2020-09-16 13:37:07
    BigDecimal(double val)
  • Java BigDecimaldouble

    2021-03-05 19:29:05
    BigDecimal类对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。BigDecimal类的常用方法如表所示。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,605
精华内容 11,842
关键字:

bigdecimal转换成double

友情链接: last_code_for_sakena.rar