当前位置:三九宝宝网 → 宝宝百科 → 宝宝知识 → 正文

java用double和float进行计算有时候精度不准确怎么办

更新:01-06 整理:39baobao.com
字体:

[Matlab数组中的数据精度如何修改]Matlab->File->Preference->Command Window->text display->Numberic format format short 通常保证小数点后4位有效数字,最多不超过七位,对于大于1000的实数,用5位有效数字的...+阅读

在大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中,这种问题是非常严重的。 在《Effective Java》中提到一个原则,那就是float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类可以解决上述问题,实例代码如下: package ex;import java.math.*;public class BigDecimalDemo { public static void main(String[] args){ System.out.println(ArithUtil.add(0.01, 0.05)); System.out.println(ArithUtil.sub(1.0, 0.42)); System.out.println(ArithUtil.mul(4.015, 100)); System.out.println(ArithUtil.div(123.3, 100)); }}class ArithUtil{ private static final int DEF_DIV_SCALE=10; private ArithUtil(){} //相加 public static double add(double d1,double d2){ BigDecimal b1=new BigDecimal(Double.toString(d1)); BigDecimal b2=new BigDecimal(Double.toString(d2)); return b1.add(b2).doubleValue(); } //相减 public static double sub(double d1,double d2){ BigDecimal b1=new BigDecimal(Double.toString(d1)); BigDecimal b2=new BigDecimal(Double.toString(d2)); return b1.subtract(b2).doubleValue(); } //相乘 public static double mul(double d1,double d2){ BigDecimal b1=new BigDecimal(Double.toString(d1)); BigDecimal b2=new BigDecimal(Double.toString(d2)); return b1.multiply(b2).doubleValue(); } //相除 public static double div(double d1,double d2){ return div(d1,d2,DEF_DIV_SCALE); } public static double div(double d1,double d2,int scale){ if(scale

本文地址:https://www.39baobao.com/show/39_127026.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

我孩子最近每次吃饭的时候都不爱吃而且有时候你喂她吃下去还会跟你临床表现 饮食表现 有些患者虽觉食欲好,但吃了几口就觉得胃部饱胀不适而中止进食,或者见到食物就不想吃。常诱发恶心呕吐;一些患者甚至千方百计以诱导一吐为快;患者过多注意饮食...

如何提高python的计算精度可以使用decimal模块来设置计算的精度。举个例子。 >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getconte...

python的浮点数运算是不是精度有问题阿再计算机的硬件中,浮点数以二进制小数表示。比如小数 [python] view plain copy 0.125 可看做1/10+2/100+5/1000,同样的方式二进制小数 [python] view plain copy 0.001 可看...

决定计算机的计算精度的是什么字长决定了计算机的计算精度。 在同一时间中处理二进制数的位数叫字长。通常称处理字长为8位数据的CPU叫8位CPU,32位CPU就是在同一时间内处理字长为32位的二进制数据。二进...

什么决定计算机的运算精度字长。 位(bit):一位二进制数,又称比特。 字节(byte):内存存储的最小单元。 字长:同一时间内,计算机能处理的二进制位数。字长决定了计算机的运算精度,字长越长,计算机的运算精度就越高...

决定计算机计算精度的主要技术指标是计算机的什么计算机系统的主要技术指标与系统配置: /1.计算机的主要性能指标 1)字长:字长是CPU能够直接处理的二进制数据位数,它直接关系到计算机的计算精度、功能和速度。字长越长处理能力...

在计算机技术指标中决定计算机的计算精度的是在计算机技术指标中,决定计算机的计算精度的是字长。 中央处理器是电脑的心脏,由运算器和控制器组成,内部结构分为控制器、运算器和存储器,这三个部分相互协调,可以进行判断、运...

C double类型数值怎样获得是精确到多少位小数求精度转换成字符串,判断小数点位置 首先判断是否有小数点,如果没有,得到结果0 如果有小数点,使用indexof判断小数点位置,然后根据字符串总长度,如123.45,得到小数点位置为3,总长度为6,那么...

Java中 double类数据运算精度不准怎么解决在大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中,这种问题是非常严重的。在《Effective Java》中提到一个原则,那就是float和double只能用...