如果我们编译运行下面这个程序会看到什么?
public class Test{
public static void main(String args[]){
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);
}
}
你没有看错!结果确实是
0.060000000000000005
0.5800000000000001
401.49999999999994
1.2329999999999999
Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在《Effective Java》这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal。BigDecimal中有我们关心的两个构造方法 ,它们是:
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 val) ,使用第一个BigDecimal(double val) 方法的确是可以做到该功能,但一样有精度丢失,我们的建议是如果需要使用double来转化,那么也先将double值使用toString()先转化为String。
分享到:
相关推荐
java 精确的浮点数运算java 精确的浮点数运算java 精确的浮点数运算 java 精确的浮点数运算java 精确的浮点数运算java 精确的浮点数运算 java 精确的浮点数运算java 精确的浮点数运算java 精确的浮点数运算 java ...
java 精确的浮点数运算 工具类 java 精确的浮点数运算 工具类java 精确的浮点数运算 工具类 java 精确的浮点数运算 工具类java 精确的浮点数运算 工具类 java 精确的浮点数运算 工具类java 精确的浮点数运算 工具类 ...
在Java编程中,浮点数运算常常会遇到精度问题,这是由于浮点数在计算机内部的存储方式导致的。为了确保浮点数运算的准确性,开发者需要采取特定的方法。以下将详细阐述这个问题,并提供正确的处理策略。 首先,理解...
5. `FPMath.java`、`MathTest.java` - 这两个可能是Java源代码,`FPMath.java`可能定义了浮点数运算的类,而`MathTest.java`可能是用于测试`FPMath.java`的类。 6. `Makefile` - C或C++的构建脚本,用于编译和链接源...
为了更好地理解浮点数运算,我们可以分析`DecimalConvertUtils.java`的代码,看它是如何处理浮点数到`BigDecimal`的转换,以及在`BigDecimal`上进行运算的实现。通常,这样的工具类会包含静态方法,便于在不同地方...
在Android平台上开发浮点数运算应用,涉及到的关键知识点包括: 1. **Android操作系统**:Android是一个基于Linux内核的操作系统,最初主要用于移动设备,后来由Google推动并广泛应用于智能手机和平板电脑。Android...
由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。
做midlet开发,如果需要用到乘幂运算,会用到这个函数。 文件名是float.java 里面包含了pow函数等midlet原本不具备的数学运算函数。
在Java编程语言中,浮点数运算经常遇到精度问题,特别是在金融或科学计算等领域,对数值的精确性有着严格的要求。这是因为Java中的`float`和`double`数据类型基于二进制浮点数表示,这导致它们无法精确表示某些十...
这个文件可能定义了一个名为`ExactFloatCalculator`或类似的类,里面包含了各种浮点数运算的方法,如`add()`, `subtract()`, `multiply()`, `divide()`等,这些方法使用`BigDecimal`进行内部计算。 在实际开发中,...
在代码中,我们创建了`BigDecimal`对象`b3`和`b4`,并展示了它们之间的加、减、乘、除运算,以及如何解决Java中浮点数运算的精度问题。例如: ```java BigDecimal b3 = new BigDecimal("0.09"); BigDecimal b4 = new...
Java对浮点数的计算是不精确的,比如0.05+0.01结果不是0.06,而是0.060000000000000005,更有甚者,一个数除以0.0,Java是不会抛异常,而是得出无穷大的结果.本工具类解决了上述问题.该类提供了加减乘除四则运算的精确计算...
`BigDecimal`提供了构造函数来创建任意精度的数字,以及多种方法来进行加、减、乘、除等运算,并且可以控制舍入模式,避免浮点数运算中的精度损失问题。 在项目描述中提到了“运用了类的特性”,这通常意味着项目中...
Java.math 包下计算浮点数和整数...Java.math 包下计算浮点数和整数的类的实例非常重要, BigInteger 和 BigDecimal 两个类是 Java.math 包中的核心类,它们提供了高精度的整数和浮点数运算,用于解决复杂的数学问题。
在 Java 中,对于浮点数的运算存在精度问题,这是由于浮点数的计算是非精确计算的。这种问题在财务应用中非常重要,因为它可能导致严重的财务错误。 问题描述 在 Java 中,浮点数的计算是非精确计算的,例如: ``...
本文将深入解析一个典型的Java笔试题目,该题目不仅考察了应试者对Java基本语法的理解,还测试了他们对整型变量处理、浮点数运算以及Java虚拟机(JVM)内存模型的掌握程度。 ### 题目分析 #### 整型变量比较 首先...
在这个示例中,我们使用`BigDecimal`的`add()`, `subtract()`, `multiply()`和`divide()`方法来进行浮点数运算,并且在除法中使用`RoundingMode`来指定舍入模式,确保得到期望的计算结果。 2. 控制浮点数运算的精度...
为了解决这个问题,Java提供了`java.math.BigDecimal`类,它支持任意精度的浮点数运算。BigDecimal使用一个BigInteger对象来表示无尺度值(unscaled value),并结合一个整数尺度(scale)来实现高精度。使用...
在Java编程语言中,处理数学表达式和基本的算术运算是一项常见的任务。"calculate.rar_java表达式运算" 提供的资源可能是一个简单的计算器程序,它支持加法、减法、乘法和除法,以及更复杂的表达式计算。下面我们将...
需要注意的是,浮点数运算可能会有精度损失,因为计算机无法精确表示所有十进制小数。 在实现这个计算器时,程序设计的基本结构会包括输入解析、运算逻辑和结果输出三个主要部分。输入解析通常会涉及字符串的处理,...