Java数据类型-精度失真问题
Posted 王六六的IT日常
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数据类型-精度失真问题相关的知识,希望对你有一定的参考价值。
百度百科
Java在java.math包中提供的API类BigDecimal
,用来对超过16位有效位的数进行精确的运算。
双精度浮点型变量double可以处理16位有效数。
在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal
。
BigDecimal所创建的是对象,不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。
方法中的参数也必须是BigDecimal
的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。
在Java开发过程中有时会遇到一些必要的运算,最重要的是一些项目是金融相关的项目对这些运算的精度要求非常高。为什么会出现精度丢失的情况呢?我们又该如何解决这种精度丢失的问题呢?
那就要我们从类型转换开始了。。
在类型转换中,整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
float a = 3.14;这个语句的意思是把双精度浮点类型(double)赋值给单精度浮点类型(float)的变量a,把一个高精度的数赋值给一个低精度的数,就会造成精度丢失了。
Bigdecimal的类的一些调用:
加法 add()函数 减法subtract()函数
乘法multiply()函数 除法divide()函数 绝对值abs()函数
以上是关于Java数据类型-精度失真问题的主要内容,如果未能解决你的问题,请参考以下文章