java中double如何相减,java double 除法运算

本文目录一览:

java double类型变量,相加或相减后面小数为什么会不一样呢?

该问题主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示1/10。就像我们平时使用的十进制中无法精确的表示1/3是一样的道理,如果需要在数值计算中不含有任何误差,要使用BigDecimal类进行编程。

具体的代码如下

//两个Double数值相加

public static Double add (Double value01,Double value02){

BigDecimal b1=new BigDecimal(value01.toString());

BigDecimal b2=new BigDecimal(value02.toString());

return b1.add(b2).doubleValue();

}

//两个Double数值相减

public static Double sub (Double value01,Double value02){

BigDecimal b1=new BigDecimal(value01.toString());

BigDecimal b2=new BigDecimal(value02.toString());

return b1.subtract(b2).doubleValue();

}

Java中 double 和 Double的区别 两者能互相转换和加减吗 求方法

double是基本的数据类型,Double是对象,是对double这个基本类型的封装。

关于Double的具体内容,可见Java的API手册。

java int double 加减法 基本类型运算问题

1.-2.8421709430404007E-14表示-2.8421709430404007乘以10的-14次方,计算机能准确表示十进制的整数,但不能准确表示十进制小数。System.out.println(150.0+0+183.28-0-183.28-150.0);150.0+0+183.28-0-183.28-150.0的结果为0.00000000000…,只不过你的输出结果为double型,精度比较高,没有超出打印函数(println之类的)的默认精度而已。

2.System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));中将((150.00)+0.00+(183.28))作为个运算单元,二个括号内的运算的结果肯定一样,与精度无关。结果当然为0。

3.用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));(150.0+0+183.28-0-183.28-150.0)的结果为0.00000000…,转换成long,舍弃小数位,结果自然为0;

4.System.out.println(150.0F+0+183.28F-0-183.28F-150.0F); 运算结果为float型,超出打印函数(println之类的)的默认精度,截取下来为0。

不知道解释的你满意不?

java double数据类型运算问题

使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。

特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。

这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错。

所以一般对double类型进行运算时,做好对结果进行处理,然后拿这个值去做其他事情。

目前总结如下:

/**

* 对double数据进行取精度.

* @param value double数据.

* @param scale 精度位数(保留的小数位数).

* @param roundingMode 精度取值方式.

* @return 精度计算后的数据.

*/

public static double round(double value, int scale,

int roundingMode) {

BigDecimal bd = new BigDecimal(value);

bd = bd.setScale(scale, roundingMode);

double d = bd.doubleValue();

bd = null;

return d;

}

/**

* double 相加

* @param d1

* @param d2

* @return

*/

public double sum(double d1,double d2){

BigDecimal bd1 = new BigDecimal(Double.toString(d1));

BigDecimal bd2 = new BigDecimal(Double.toString(d2));

return bd1.add(bd2).doubleValue();

}

/**

* double 相减

* @param d1

* @param d2

* @return

*/

public double sub(double d1,double d2){

BigDecimal bd1 = new BigDecimal(Double.toString(d1));

BigDecimal bd2 = new BigDecimal(Double.toString(d2));

return bd1.subtract(bd2).doubleValue();

}

/**

* double 乘法

* @param d1

* @param d2

* @return

*/

public double mul(double d1,double d2){

BigDecimal bd1 = new BigDecimal(Double.toString(d1));

BigDecimal bd2 = new BigDecimal(Double.toString(d2));

return bd1.multiply(bd2).doubleValue();

}

/**

* double 除法

* @param d1

* @param d2

* @param scale 四舍五入 小数点位数

* @return

*/

public double div(double d1,double d2,int scale){

// 当然在此之前,你要判断分母是否为0,

// 为0你可以根据实际需求做相应的处理

BigDecimal bd1 = new BigDecimal(Double.toString(d1));

BigDecimal bd2 = new BigDecimal(Double.toString(d2));

return bd1.divide

(bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

这样,计算double类型的数据计算问题就可以处理了。

另外补充一下 JavaScript 四舍五入的方法:

小数点问题

Math.round(totalAmount*100)/100 (保留 2 位)

function formatFloat(src, pos)

{

return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);

}

关于JAVA double类型相减的问题

可以相减 你的写法有错

输出函数的原型是print(String) 也就是括号里面的是String类型

多个string连接的时候用就 ” + ” 连接 你这里出现了 ” – ” 号 这是不允许的(double类型默认会调用toString()将数据转换成string)

当你用:System.out.println(“两个数的差是:”+a3-a4);减号被认为是错误的…

正确的写法应该是:System.out.println(“两个数的差是:”+(a3-a4));

至于你说 加 可以 只怕结果不是你想要的吧

乘除是因为运算符的优先级问题可以

建议你去看一些相关的基础吧

java两个double变量相减

要不然结果是多少?

3.7238113E7

也就是3.7238113X10^7

a-b 当然就是那结果啊

原创文章,作者:YUKZ,如若转载,请注明出处:https://www.506064.com/n/133120.html

(0)
YUKZYUKZ
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • ojdbc8.jar详解

    ojdbc8.jar是Oracle公司为了与Java程序实现JDBC(Java Database Connectivity)而发布的一个jar文件。其主要作用是提供一个Java程序…

    编程 2024-10-04
  • 移动端数据java后台接收(java接收前端数据)

    本文目录一览: 1、java怎么接收android请求过来的json数据 2、java做手机端后台,如何接受get请求参数 3、java后台怎么获取app传过来的数据 4、移动端调…

    编程 2024-10-03
  • 包含精通javascript的词条

    本文目录一览: 1、精通javascript要多久???我C语言比较熟。。。 2、javascript要学多久? 3、求《精通javascript第二版》全文免费下载百度网盘资源,…

    编程 2024-10-04
  • 深入探究pythontutor.com

    一、pythontutor.com的概述 pythontutor.com是一个在线的Python代码可视化工具,由Philip Guo于2010年创建。它的主要功能是将Python…

    编程 2024-10-04
  • java双线主机,Java获取主机名

    本文目录一览: 1、个人建站,选什么虚拟主机呢? 2、虚拟空间分为几种?分别是什么? 3、java虚拟主机,jsp虚拟主机,国内机房的,最好双线的,哪家好呢 个人建站,选什么虚拟主…

    编程 2024-10-04
  • cnjsszd啥意思,cnsz是什么意思

    本文目录一览: 1、szd是什么意思? 2、SZD是什么意思 3、szd是什么意思szd的意思 4、结构图中的szd是什么意思 5、cp名szd什么意思 szd是什么意思? 1、s…

    编程 2024-10-03
  • python压缩js的简单介绍

    本文目录一览: 1、怎么样python爬虫进行此网站爬取 2、Python实现批量压缩文件/文件夹——zipfile 3、python或JS对SQL语句美化和压缩 4、python…

    编程 2024-10-03
  • MD5.js详解

    MD5.js是一个用于JavaScript的MD5加密算法库。 一、 md5.js解密 MD5是一种单向算法,逆向解密非常困难。因此MD5.js没有提供解密方法。 二、 md5.j…

    编程 2024-10-04
  • 使用.tolist()将Python数据类型转换为列表

    引言 在Python编程中,使用列表是常见的操作。尤其在数据处理,如机器学习、统计学等领域中,使用列表存储数据是至关重要的。然而,在实际编程中,我们经常会用到一些Python数据类…

    编程 2024-10-09
  • 找不到满足python(找不到满足jieba要求的版本)

    本文目录一览: 1、电脑提示我计算机丢失python34.dll,这到底是什么啊,求大神 2、python中select()没有找到满足要求的结点时,返回值是什么? 3、pychr…

    编程 2024-10-03

发表回复

登录后才能评论