java 中 float和double类型的加减,会产生错误,怎么办,怎么样解决这个问题?

Float f1 = 4099.9584544F;
Float f2 = 969.01F;
Float f3 = 398.32F;
System.out.println("F1-F2-F3 浮点型: " +(f1-f2-f3));

浮点运算会产生误差是必然的,因为有些十进制的小数是无法转换成有限位的二进制的,所以就会截取掉后面的无穷二进制位
使用BigDecimal类
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-25
应该声明 float类型数据,而不是Float,后面这种是数据包装类;你的这种声明方式是错误的,即使用数据包装类,也是Float f1 = new Float(4099.9584544F);
也就是说只要把Float 改为float就行了
第2个回答  2011-08-26
哥们,不会产生错误的,我试过了,完全正确,你看看你的运行环境对不对,得把编译环境设置成5以上

java 中 float和double类型的加减,会产生错误,怎么办,怎么样解决这个问 ...
浮点运算会产生误差是必然的,因为有些十进制的小数是无法转换成有限位的二进制的,所以就会截取掉后面的无穷二进制位 使用BigDecimal类

java中double类型数据加减操作精度丢失问题及解决方法
首先,需要明白的是,Java中的double和float类型用于表示近似数值,它们在进行运算时可能会因舍入误差而产生精度丢失。因此,在进行商业计算或要求精确度较高的计算时,应避免使用double和float,而是选择Java.math.BigDecimal类。BigDecimal类提供了多种构造方法,其中两个最为常用的是:BigDecimal(double val...

java用double和float进行计算有时候精度不准确怎么办
回答:参考下: http:\/\/blog.javaxxz.com\/?p=763

java的double、float类型的比较
在Java编程中,处理double和float类型的数值时,建议尽量避免直接进行比较或运算操作,以防止因浮点数精度问题引发的错误。为确保计算的准确性和避免精度损失,推荐使用BigDecimal类进行相关操作。当需要比较double或float类型的数值大小时,由于它们可能存在精度损失,直接使用<=, >=等运算符可能导致不准确的结...

java用double和float进行计算有时候精度不准确怎么办
这个问题我知道!Java进行数学计算时有一个原则,就是double和float用来做科学计算,商业计算中最好使用java.math.BigDecimal,例如——doubleresult;doubled1=1.0;doubled2=1.0;BigDecimalbd1=newBigDecimal(Double.toString(d1));BigDecimalbd2=newBigDecimal(Double.toString(d2));result=bd1.add(bd2)...

java用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...

java中为什么两个浮点数相加结果不符合预期
因为浮点数实际上只是个近似值。在进行运算后,浮点数的精度就会进一步下降。要保证精确计算,应使用BigDecimal类。例如 BigDecimal bd3=new BigDecimal(String.valueOf(0.05));BigDecimal bd4=new BigDecimal(String.valueOf(0.01));System.out.println((bd3.add(bd4)).doubleValue());...

JAVA 中出现double 及float计算丢失精度的问题,大家是怎么避免的
double a2 = 1.01;double a3 = a1 - a2;DecimalFormat df = new DecimalFormat("#.000000");System.out.println("double: " + df.format(a3));} static void floatErr() { float f1 = 1.3284544f;float f2 = 1.32f;BigDecimal n = new BigDecimal((f1 - f2));BigDecimal n2 = n....

Java中float类型自动转double类型会有误差
。你楼上和楼主我有份愚见 首先:Java无法精确计算小数后面的比如 double a = 1.3; double b = 1.5; System.out.println( a == b); 你会发现结果是true 因为java计算的时候已经把小数部分截止掉了 或者说不止Java 应该其他语言也是这样。。 至少我没学过一门语言是能精确判断的 ...

浮点精度(float、double)运算不精确的原因
解决精度运算丢失问题的方法有三种。首先,可以使用语言自带的高精度运算库,如Python的decimal模块和Java的BigDecimal等。这些库允许用户以字符串形式输入数值,从而避免了转换过程中可能的精度损失。其次,可以采用自定义算法实现高精度计算,但这通常需要更复杂的编程技巧和更高的计算资源。最后,对于一些特定...

相似回答