`
alienjun
  • 浏览: 11631 次
  • 性别: Icon_minigender_1
  • 来自: 广西
最近访客 更多访客>>
社区版块
存档分类
最新评论

精确计算避免用float,double

    博客分类:
  • Java
 
阅读更多
在精确计算的时候不能采用float和double,

System.out.print(1.03-0.42);得到的是0.61000000000001

相关正确的做法是使用BigDecimal,int,long

BigDecimal有个好处,允许你完全控制舍入,可以从八种模式中选择。没有超过9位十进制数字,可以使用int,不超过18位,可以使用long,如果超过了18位,必须使用BigDecimal。
分享到:
评论

相关推荐

    Java 精确计算-double-float-String

    标题中的"Java 精确计算 - double-float-String"指向的是Java中处理浮点数(double和float)以及字符串表示的数值时可能遇到的精度问题,以及如何通过特定方法实现精确计算。描述中提到的链接指向了一个具体的博客...

    iOS 解决floatValue,doubleValue等计算不精确问题,一句话解决精确计算,精确比较

    1. **避免直接比较浮点数**:由于浮点数计算的不精确性,直接用`==`或`!=`来比较两个浮点数的相等性通常不是个好主意。一个更好的做法是设置一个很小的阈值(如`1e-6`),然后检查两个数的差值是否在这个阈值范围内...

    基于C++浮点数(float、double)类型数据比较与转换的详解

    例如,使用`%.8lf`格式化`float`可能无法避免精度丢失,而在适当情况下,对`double`使用`%.20lf`可以保留更多位数,减少精度损失。 3. **浮点数比较**: 直接使用`==`操作符比较两个`double`类型的浮点数是否相等...

    Java实现的浮点类的精确计算

    在Java中,浮点数(float和double)是基于IEEE 754标准的,它们使用二进制浮点表示法,这导致在进行除法、乘法、加法和减法等操作时可能会出现非预期的精度损失。例如,两个看似相等的浮点数在计算后可能因为舍入...

    字节和float转换小工具

    浮点数的存储方式遵循IEEE 754标准,该标准定义了如何用有限的二进制位来精确表示和操作浮点数。通常,32位的float(也称为单精度浮点数)可以表示大约6到9个有效数字,而64位的double(双精度浮点数)则可以表示更...

    解决java数值范围以及float与double精度丢失的问题

    在进行精确计算时,应该避免使用float和double类型,而应该使用BigDecimal类型或高精度的浮点数库。 四、结论 Java中的数值范围和浮点数精度问题是非常重要的知识点。在进行开发时,需要了解Java中的数值范围和...

    iOS NSDecimalNumber解决数值计算不精确问题,一句话解决精确计算,精确比较

    标题和描述中提到的"iOS NSDecimalNumber解决数值计算不精确问题,一句话解决精确计算,精确比较",正是针对这一问题给出的一种解决方案。NSDecimalNumber是Apple提供的一个类,用于处理高精度的十进制数值,可以...

    float型和double型数据的存储方式1

    总之,理解float和double的存储机制对于优化数值计算和避免精度错误至关重要。在进行浮点数操作时,开发者应当意识到这些内在的限制,并根据需要选择合适的精度类型,或者使用特殊的数学库来提高计算的精确度。同时...

    c#中decimal ,double,float的区别.doc

    需要注意的是,浮点数在精确计算中存在隐患,例如浮点数精度损失的问题,可能在很多地方出现,例如 d * g / g 不一定等于 d,d / g * g 也不同于 d。 decimal 虽然具有高精度,但它仍然存在精度损失的问题。 此外,...

    关于float与double结果的误差

    但是,在使用float和double时,经常会出现一些意外的结果,如多出来的13位等。这种现象是由于浮点数的存储机制所引起的。 浮点数的存储机制是按照指数形式存储的,分为小数部分和指数部分。在float类型中,小数部分...

    解析Java中的精确计算方法.pdf

    使用BigDecimal进行精确计算时,需要注意的是其构造函数和方法调用的正确性。在初始化BigDecimal时,通常推荐使用字符串构造器,而非双精度浮点数构造器,以避免额外的舍入误差。例如,正确创建BigDecimal实例的代码...

    Java中实现浮点数的精确计算

    - 使用`String`参数的构造器则可以避免这些问题,因为它不会受到`double`类型精度的影响。 ```java BigDecimal bd1 = new BigDecimal("0.1"); // 精确表示0.1 BigDecimal bd2 = new BigDecimal(0.1); // 可能会...

    Java与MySQL中小数保存问题解析.pptx.pptx

    尽管double的精度较高,但在某些情况下仍然可能不足以满足精确计算的需求。此外,Java还支持科学计数法,这种表示方式可以有效地表示非常大或非常小的数值,例如3.4E-2代表0.034。 MySQL数据库则提供了多种小数类型...

    float相关知识

    单精度浮点数(float)占用的内存少于双精度浮点数(double),所以在内存有限或者性能要求高的场景下,会选择使用float。然而,牺牲精度的同时也可能带来计算误差的增加。 ### 浮点数的转换 编程中常需要将整数、...

    java代码-1·byte short int 在计算是会自动转化为int 2.float double 为近似值,byte short int 转化时可能会精确丢失 3.把大类型转化小的类型时可能会丢失

    浮点类型(float和double)用于表示带有小数的数值,它们是基于二进制浮点表示的,因此不能精确表示所有十进制数。例如,0.1在二进制中是无限循环的,无法完全存储,导致计算结果可能有微小误差。当整数类型转换为...

    int 到 float 转换精度损失测试程序 C++ 源代码

    例如,可以采用`double`代替`float`以获得更高的精度,或者在必要时使用高精度库如GMP(GNU Multiple Precision Arithmetic Library)来避免精度损失。 总结来说,从`int`到`float`的转换可能会因为浮点数的有限...

    Java源码获取浮点数类型的最大最小值

    例如,当进行大数值运算时,确保结果不超出`double`的最大值可以避免计算错误。同时,在处理非常小的数值时,确保不小于`float`或`double`的最小值,可以防止因为数值过小而导致的精度丢失。 此外,浮点数的比较也...

    数据库 数据类型float到C#类型decimal, float数据类型转化无效

    在数据库中,浮点数通常由float或double类型来表示,而在C#中,我们通常使用float或...通过这些方法,可以确保从数据库中提取的数据能够被安全、准确地转换为C#中的decimal类型,从而满足应用程序在精确计算上的需求。

    VC API 计算器 double型

    在处理double型数据时,需要注意避免精度损失,例如,在进行除法运算时,可能会使用除法运算符(/)并确保分子和分母都是double类型。 总的来说,这个"VC API 计算器 double型"项目是一个基础的软件开发实例,涵盖了...

Global site tag (gtag.js) - Google Analytics